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

时间:2011-06-01 23:00:02

标签: ruby

为什么这不起作用?

case ARGV.length
  when 0
    abort "Error 1"
  when > 2
    abort "Error 2"
end

4 个答案:

答案 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