Ruby on Rails Switch [重复]

Posted

技术标签:

【中文标题】Ruby on Rails Switch [重复]【英文标题】:Ruby on Rails Switch [duplicate] 【发布时间】:2011-09-30 00:12:34 【问题描述】:

谁能提供一个例子来说明如何在 Ruby 中使用 switch case 来处理变量?

【问题讨论】:

【参考方案1】:

我假设您指的是案例/何时。

case a_variable # a_variable is the variable we want to compare
when 1    #compare to 1
  puts "it was 1" 
when 2    #compare to 2
  puts "it was 2"
else
  puts "it was something else"
end

puts case a_variable
when 1
  "it was 1"
when 2
  "it was 2"
else
  "it was something else"
end

编辑

也许不是每个人都知道,但非常有用的是您可以在 case 语句中使用正则表达式。

foo = "1Aheppsdf"

what = case foo
when /^[0-9]/
  "Begins with a number"
when /^[a-zA-Z]/
  "Begins with a letter"
else
  "Begins with something else"
end
puts "String: #what"

【讨论】:

非常感谢。我可以用 params[:id] 替换 a_variable 吗? 当然,只要确保您在比较相同类型的变量,例如“1”不等于 1。但是“1”.to_i 等于 1(to_i 将字符串转换为整数)。如果要将 params[:id] 与整数进行比较,则需要执行“case params[:id].to_i”。用“case”测试 params[:id] 对我来说有点奇怪,你确定你在做什么吗? 谢谢伙计。那真的很有帮助。我认为这是问题所在! 与传统的 switch..case 有一些不同。最值得注意的是没有级联到下一个项目。另一个是您可以在每个when 中列出多个(逗号分隔)项目。最后,它们不仅匹配相等,还匹配 === 运算符,因此:String === "thing" 为真,因此 when String then whatever 将匹配。 重要提示: 与许多其他语言中的switch 语句不同,Ruby 的case 没有fall-through,因此无需以when 结尾break.

以上是关于Ruby on Rails Switch [重复]的主要内容,如果未能解决你的问题,请参考以下文章

将重复的SQL模型复制到Ruby on Rails postgresql模型中

Ruby on Rails - 一个布局页面不同的内容

在 ruby​​ on rails 中,感叹号后面是啥意思? [复制]

Ruby On Rails:获取回形针图像的 md5 哈希

使用啥 IDE 在 Windows 上使用 Ruby on Rails 进行开发? [复制]

思考Ruby On Rails的底层代码(Ruby on Rails 開發秘籍 | Ruby on Rails 快速入門)