Ruby 中的 case 语句

yufei       6 年, 3 月 前       776

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 运算符分隔

目前尚无回复
简单教程 = 简单教程,简单编程
简单教程 是一个关于技术和学习的地方
现在注册
已注册用户请 登入
关于   |   FAQ   |   我们的愿景   |   广告投放   |  博客

  简单教程,简单编程 - IT 入门首选站

Copyright © 2013-2022 简单教程 twle.cn All Rights Reserved.