一般哪个更好用?:
case n
when 'foo'
result = 'bar'
when 'peanut butter'
result = 'jelly'
when 'stack'
result = 'overflow'
return result
Run Code Online (Sandbox Code Playgroud)
要么
map = {'foo' => 'bar', 'peanut butter' => 'jelly', 'stack' => 'overflow'}
return map[n]
Run Code Online (Sandbox Code Playgroud)
更具体地说,我何时应该使用case语句,何时应该只使用哈希?
dby*_*rne 11
哈希是数据结构,case语句是控制结构.
当您只是检索某些数据时(例如您提供的示例中),您应该使用哈希值.如果需要执行其他逻辑,则应编写case语句.
此外,如果您需要执行某些模式匹配,则使用case语句是有意义的:
#pattern matching using ranges
letterGrade = case score
when 0..64 then "F"
when 65..69 then "D"
when 70..79 then "C"
when 80..89 then "B"
when 90..100 then "A"
else "Invalid Score"
end
#pattern matching using regular expressions
case songData
when /title=(.*)/
puts "Song title: #$1"
when /track=(.*)/
puts "Track number: #$1"
when /artist=(.*)/
puts "Artist name: #$1"
end
一般来说,编程中的"更好"意味着不同的东西.例如,更好的计划
等等
由于我们讨论的是Ruby,因此性能通常不太重要.如果您确实需要性能,可以考虑另一种编程语言.所以,我先看看标准(1)和(2).看起来更好的Ruby代码通常代表一个"更好"的程序.哪个代码看起来更好?哪个表达意图更好?如果添加/删除逻辑,哪个更容易修改?这取决于你的问题,这在某种程度上是一种品味问题.
对我来说,在您的简短示例中,哈希解决方案更好.案例解决方案提供了更大的灵活性,在这种情况下您不需要(但在其他情况下可能需要).