Первоначально у меня был этот код, написанный как серия операторов if
, но, узнав больше о Ruby, решил, что оператор case
может быть более подходящимТем не менее, теперь он, кажется, не работает, и я не уверен, почему.
location = gets.chomp.downcase
case location
when 'v' || 'vaca'
file1, file2 = 'vMasterLocation.csv', 'vMasterSR.csv'
when 'c' || 'comm'
file1, file2 = 'cMasterLocation.csv', 'cMasterSR.csv'
else
puts "Not a valid location."
exit
end
Оператор работает как ожидалось, когда location
вводит либо V
, v
, C
или c
, но всякий раз, когда я пытаюсь ввести vaca
или comm
Ruby, возвращаем следующее: csv.rb:1335:in 'initialize': can't convert nil into String (TypeError)
Я неправильно использую ||
или, возможно, я неправильно понял выражения case?Любая обратная связь высоко ценится.Спасибо!
Здесь, в предыдущем выражении, это просто оператор if
для справки:
location = gets.chomp.downcase
if location == 'v' || location == 'vaca'
file1, file2 = 'vMasterLocation.csv', 'vMasterSR.csv'
elsif location == 'c' || location == 'comm'
file1, file2 = 'cMasterLocation.csv', 'cMasterSR.csv'
else
puts "Not a valid location."
exit
end
Кроме того, это правильное использование Ruby оператора case
над if
заявлением?Я пытаюсь понять, когда уместнее использовать один поверх другого.