case ARGV.length
when 0
abort "Error 1"
when > 2
abort "Error 2"
end
Ответ 1
Оператор if, вероятно, будет более подходящим для вашего кода, так как у вас нет определенного диапазона/значения, а просто больше, чем:
if ARGV.length == 0
abort "Error 1"
elsif ARGV.length > 2
abort "Error 2"
end
Ответ 2
Недействительный синтаксис 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, читается рубином, например:
if ARGV.length == > 2
Когда вы удаляете определенный объект из операторов case, вы можете применять условные выражения в операторе when.
Ответ 3
Используйте 1.0 / 0.0, чтобы получить бесконечность, которая исправляет код @mosch:
case ARGV.length
when 0
raise "Too few"
when 3..(1.0/0.0)
raise "Too many"
end
Вам не обязательно, чтобы Чак Норрис разделился на ноль с плавающей точкой.
Ответ 4
Ну, это не работает, потому что это недействительный синтаксис 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