为了账号安全,请及时绑定邮箱和手机立即绑定

如何用Ruby编写开关语句

/ 猿问

如何用Ruby编写开关语句

呼啦一阵风 2019-07-22 12:12:00

如何用Ruby编写开关语句

如何用Ruby编写开关语句?


查看完整描述

3 回答

?
慕田峪4524236

Ruby使用case表达相反。

case xwhen 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没有跌落,所以没有必要终止每一个when带着break..还可以在单个when从句when "foo", "bar".



查看完整回答
反对 回复 2019-07-23
?
慕丝7291255

case...when在处理类时会出现一些意外行为。这是因为它使用===接线员。

该运算符对文字的工作与预期相同,但不适用于类:

1 === 1           # => trueFixnum === Fixnum # => false

这意味着如果你想做一个case ... when对于对象的类,这将不起作用:

obj = 'hello'case obj.classwhen String
  print('It is a string')when Fixnum
  print('It is a number')else
  print('It is not a string')end

将打印“它不是字符串”。

幸运的是,这个问题很容易解决。这个===运算符已被定义为返回true如果将其与类一起使用,并将该类的实例作为第二个操作数提供:

Fixnum === 1 # => true

简单地说,上面的代码可以通过删除.class:

obj = 'hello'case obj  # was case obj.classwhen String
  print('It is a string')when Fixnum
  print('It is a number')else
  print('It is not a string')end

今天我在寻找答案的时候碰到了这个问题,这是第一个出现的页面,所以我认为它对我同样情况下的其他人是有用的。



查看完整回答
反对 回复 2019-07-23
?
达令说

这是由案例在红宝石里。亦见维基百科上的这篇文章.

引述:

case nwhen 0
  puts 'You typed zero'when 1, 9
  puts 'n is a perfect square'when 2
  puts 'n is a prime number'
  puts 'n is an even number'when 3, 5, 7
  puts 'n is a prime number'when 4, 6, 8
  puts 'n is an even number'else
  puts 'Only single-digit numbers are allowed'end

另一个例子:

score = 70result = case score   when 0..40 then "Fail"
   when 41..60 then "Pass"
   when 61..70 then "Pass with Merit"
   when 71..100 then "Pass with Distinction"
   else "Invalid Score"endputs result

在第123页(我正在使用Kindle)Ruby编程语言(第一版,O‘Reilly),上面写着then关键字后面的when子句可以用换行符或分号替换(就像if then else(语法)(Ruby1.8还允许用冒号代替then..但是在Ruby1.9中不再允许使用这种语法。)



查看完整回答
反对 回复 2019-07-23
  • 3 回答
  • 0 关注
  • 80 浏览
我要回答

相关问题推荐

添加回答

回复

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信