?
Ruby?中的?case?语句非常强大,首先我们来看一个基本用法:
grade = case when point >= 85: 'A' when point >= 70 && point < 80: 'B' when point >= 60 && point < 70: 'C' when point < 60: 'D' else 'E' end
?
这里?case?语句的作用和?if?表达式类似,?case?语句的返回值就是最后一个执行的表达式的值。和?if?语句类似,如果写在同一行的话需要加?then?或冒号。
另一种也是最常用的形式是在?case?后列出目标,然后每个语句依次和目标比较:
case input_linewhen "debug" print "We are in debug mode."when /p\s+(\w+)/ dump_variable($1)when "quit", "exit" exitelse print "Illegal command: #{input_line}"end
另一个例子:
?
Season = case month when 3..5 : "Spring" when 6..8 : "Summer" when 9..11: "Autumn" when 12..2: "Winter" else "Error" end
?
Ruby?提供了一个运算符?===?,只要一个类提供了?===?方法,那这个类的对象就可以出现在?case?语句中。例如对于正则表达式定义了?===?为模式匹配。
Ruby?中,所有类的基类是?Class?类,所有类实例都是?Class?类的实例(?to-do?)。它定义?===?的含义为为参数所提供是否为实例的类或父类。
case shapewhen Square, Rectangle# ...when Circle# ...when Triangle# ...else# ...end
?
?
画龙画虎难画骨,知人知面不知心。