私はこのコードをテストしていますが、期待通りに動作しません。誰かがこれでいくつかの光を当てることができますか?私はそれが実行される最初のエントリに置くが、私は後者のエントリを使用している場合、それが印刷さ 複数のケース/条件付き||
language = { JS: "Websites", Python: "Science", Ruby: "Web apps" }
puts "What language would you like to know? "
choice = gets.chomp
case choice
when "js" || "JS"
puts "Websites!"
when "Python" || "python"
puts "Science!"
when "Ruby" || "ruby"
puts "Web apps!"
else
puts "I don't know!"
end
、「私は知りません!」
つまり「js」と入力すると「JS」と入力すると「わからない」というメッセージが表示されます。
@DilAzatした後、他の質問に簡単に
をその答えを得ることができ、質問をする前に検索を実行してください:もちろん、あなたが受け取った修正は正しいですが、彼らはドンなぜあなたは観察された振る舞いを持っているのか説明していない:元のコードでは、最初の* when *式は 'choice ===(" js "||" JS ")と等価です。今、 '' js '' || "JS"は "js"に評価されるので、あなたは基本的に 'choice ==" js "'を持っていたので、それは "JS" ''ではうまくいきませんでした。 – user1934428
あなたの指針をありがとう!私は試して、それは魅力として働いた:)しかし、 "js" || "JS"は "js"と評価されるので、基本的に== "js" <==を選択しました。なぜなら、Rubyは大文字と小文字を区別する厳密な言語ではないからです。なぜ "js"は "JS"と同じだと思いますか?事前に百万円ありがとう –
X || Yは 'nil'または' false'のいずれかでない限り、Xに評価されます。この場合、Yと評価されます。 "JS"、 "js"は明らかにnilでもfalseでもないので、 "js"は式の戻り値です。 Rubyは正しい議論を見るのに苦労することはありません。物語の士気:あなたの演算子を学ぶ;-) – user1934428