使用hash或case-statement [Ruby]

一般哪个更好用?:
case n
when 'foo'
 result = 'bar'
when 'peanut butter'
 result = 'jelly'
when 'stack'
 result = 'overflow'
return result

要么

map = {'foo' => 'bar','peanut butter' => 'jelly','stack' => 'overflow'}
return map[n]

更具体地说,我何时应该使用case语句,何时应该只使用哈希?

解决方法

哈希是数据结构,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

相关文章

validates:conclusion,:presence=>true,:inclusion=>{...
一、redis集群搭建redis3.0以前,提供了Sentinel工具来监控各...
分享一下我老师大神的人工智能教程。零基础!通俗易懂!风趣...
上一篇博文 ruby传参之引用类型 里边定义了一个方法名 mo...
一编程与编程语言 什么是编程语言? 能够被计算机所识别的表...
Ruby类和对象Ruby是一种完美的面向对象编程语言。面向对象编...