Ruby 真是编程语言中的一朵奇葩,完全的面向对象,就连 case 语句都要独树一帜。 这货语法格式有返回值也就算了,语法格式竟然都不一样。
Ruby 中的 case 语句的用法一般如下
# 一个简单的 case/when 语句 case name when "libai" put "Hello libai" when "yufei" put "Hello yufei" else put "Hi #{name}!" end
语法
case 语句可以包含一个可选条件,其后可以跟随零个或多个 when 语句。它返回第一个 when 语句为 true 时的值,如果都不为 true ,则返回 nil
str = case "match" when "match" then "I match !" end # => str = "I match !" str = case "lolcat" when "not match" then "lolcat" end # => str = nil
恒等于判断
when 语句判断是否匹配时采用的是 恒等于 操作符,也就是 === ,该符号的左边永远都是 when 语句
case "lolcat" when String then "I'm a String" when Fixnum then "I'm a Fixnum" when Range then "I'm a Range" end
这样看也许不明显,但如果我们使用 if 语句改写,就是下面这样啦
if String === "lolcat" "I'm a String" elsif Fixnum === "lolcat" "I'm a Fixnum" elsif Range === "lolcat" "I'm a Range" end
是不是就秒懂了...
匹配多个值的情况
在其它类 C 中,如果要匹配多个语句,则可以省略 case 中的 break 关键子。
Ruby 中的情况类似,不过用的不是省略break 语句,而是 when 表达式可以有多个选项。
例如
case "lolcat" when String, "I'm a string" then true end
如果我们使用 if 语句改写,就是下面这样啦
if String === "lolcat" or "I'm a string" === "lolcat" true end
每个比较都由一个 or 运算符分隔
目前尚无回复