Ruby 为什么';";案例;加上;何时>;2“;工作
为什么这不起作用Ruby 为什么';";案例;加上;何时>;2“;工作,ruby,Ruby,为什么这不起作用 case ARGV.length when 0 abort "Error 1" when > 2 abort "Error 2" end 它不起作用,因为它不是有效的ruby语法。但是,您可以这样做: x = 15 case x when 0..9 then puts "good" when 10..12 then puts "better" when 13..200 then puts "best" else puts
case ARGV.length
when 0
abort "Error 1"
when > 2
abort "Error 2"
end
它不起作用,因为它不是有效的ruby语法。但是,您可以这样做:
x = 15
case x
when 0..9 then puts "good"
when 10..12 then puts "better"
when 13..200 then puts "best"
else
puts "either great or poor"
end
if
语句可能更适合您的代码,因为您没有确定的范围/值,而只是大于:
if ARGV.length == 0
abort "Error 1"
elsif ARGV.length > 2
abort "Error 2"
end
这不是有效的ruby语法 你需要的是
case
when ARGV.length == 0
abort "Error 1"
when ARGV.length > 2
abort "Error 2"
end
在编写case x
时,您需要了解的一个重要部分是ruby接受x,然后将比较应用于插入When
子句中的参数或表达式
当x>2时你说的行读起来像ruby:
if ARGV.length == > 2
从case
语句中删除特定对象时,可以在When
语句中应用条件。使用1.0/0.0
获得无穷大,这修复了@mosch的代码:
case ARGV.length
when 0
raise "Too few"
when 3..(1.0/0.0)
raise "Too many"
end
不必是Chuck Norris就可以除以浮点零。Ruby 1.8.7+irb 0.9.5 reports(irb):4:语法错误,OP的原始指令集出现意外“>”。我的答案包括一个正在工作的重写指令集。我在一个.rb文件中试用了它,它确实显示了一个语法错误。*&^^^%&^事实上,这里令人恼火的是,我找不到支持我的主张的确切文件,我只是碰巧知道答案。rubyspec.org和ruby-doc.org没有任何帮助。我能找到的语言语法规范似乎没有涵盖这种情况。实际上,从技术上讲,它是:if 2===>ARGV.length
-case语句在when
关键字的参数上使用tripple equals运算符,他们提供了case
关键字的参数作为自身比较的价值。你的答案对我来说是唯一有意义的——真正的惯用和优雅。这也是我使用的。你也可以用换行代替“then”而不是(1.0/0.0)
我们可以用Float::INFINITY
,它是在ruby 1.9.3中添加的。1.0/0.0周围的括号看起来多余,因为“.”的优先级比“/”低+1供Chuck Norris参考。