ruby case表达式

?

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

?

?

画龙画虎难画骨,知人知面不知心。

ruby case表达式

相关文章:

你感兴趣的文章:

标签云: