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
运算符分隔
目前尚无回复