1

私は当初、このコードを一連の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の入力がVvC、またはのいずれかの場合、ステートメントは期待どおりに実行されますが、c入力を試みるたびに、vacaまたはcommRuby が次を返します。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

caseまた、これはステートメントに対するステートメントの適切な「Ruby」使用ifですか? どちらか一方を使用する方が適切な場合を理解しようとしています。

4

2 に答える 2

7

ではなくコンマを使用します||

case location
when 'v', 'vaca'

case ステートメントの構文の詳細については、こちらを参照してください。

于 2011-11-23T04:26:38.450 に答える
1

これを試して:

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
于 2011-11-23T04:28:17.207 に答える