为什么“case> 2”的“case”不起作用?

为什么这不起作用?

case ARGV.length when 0 abort "Error 1" when > 2 abort "Error 2" 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子句中插入的一个或多个表达式进行比较。

when x >2读到ruby when x >2 ,你说的行如下:

 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 

你不必被查克诺里斯除以浮点零点。

好吧,它不起作用,因为它不是有效的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