Подтвердить что ты не робот

Почему "случай" с "когдa> 2" работает?

Почему это не работает?

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

Ответ 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