为什么这不起作用?
case ARGV.length
when 0
abort "Error 1"
when > 2
abort "Error 2"
end
答案 0 :(得分:41)
这不是有效的ruby语法。
您需要的是
case
when ARGV.length == 0
abort "Error 1"
when ARGV.length > 2
abort "Error 2"
end
当您编写case x
时,您需要了解的重要部分是ruby接受x,然后对您在when
子句中插入的参数进行比较。
你说when x >2
的行如下所示读取ruby:
if ARGV.length == > 2
从case
语句中删除特定对象时,可以在when
语句中应用条件。
答案 1 :(得分:22)
使用1.0 / 0.0
获取无穷大,修复了@ mosch的代码:
case ARGV.length
when 0
raise "Too few"
when 3..(1.0/0.0)
raise "Too many"
end
你不必被查克诺里斯除以浮点零点。
答案 2 :(得分:16)
嗯,它不起作用,因为它不是有效的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
答案 3 :(得分:7)
if
语句可能更适合您的代码,因为您没有确定的范围/值,而只是大于:
if ARGV.length == 0
abort "Error 1"
elsif ARGV.length > 2
abort "Error 2"
end