如何用Ruby编写switch语句?

推荐答案

Ruby使用的是case expression.

case x
when 1..5
  "It's between 1 and 5"
when 6
  "It's 6"
when "foo", "bar"
  "It's either foo or bar"
when String
  "You passed a string"
else
  "You gave me #{x} -- I have no idea what to do with that."
end

Ruby使用===运算符将when子句中的对象与case子句中的对象进行比较.例如,1..5 === x,而不是x === 1..5.

如上所示,这允许使用复杂的when个子句.范围、等级和各种各样的东西都可以测试,而不仅仅是平等.

与许多其他语言中的switch条语句不同,Ruby的case没有fall-through条语句,因此没有必要在when的末尾加上break.您还可以在一个when子句(如when "foo", "bar")中指定多个匹配项.

Ruby相关问答推荐

运行跳过的RSpec测试,如果通过则失败

MongoDB通过Brew Services";未定义的方法`plist_starting';";

如何查询哪些RuboCop规则适用于文件?

Windows powershell文件类型编码中Ruby IO流的原因是什么

碰撞检测测试中对象的 Nil 类

需要Ruby

您如何将 Cucumber 场景标记为待处理

Ruby 哈希默认值行为

无法正确自动生成 Ruby DevKit 配置文件

查找两个数组之间的共同值

如何在 ruby​​ 中针对正则表达式测试整个字符串?

ruby datetime 中有 add_days 吗?

对于基于 GitHub 的 gem,强制Bundle 安装使用 https:// 而不是 git://

如何在 ruby​​ 中解压缩 Gzip 字符串?

使用哈希参数进行 DRY Ruby 初始化

是什么让 Ruby 变慢了?

如何在Ruby中获取给定月份的天数,占年份?

在ruby中将字符串转换为十进制数

Ruby 中的动态方法调用

如何在 Rails 应用程序中使用 httparty 的基本身份验证?