以下のプログラムは、 "99 Bottles of Beer"の歌詞を出力します。3進演算子Falseの場合にTrueオプションを出力する
残っているボトルが1つしかないところに曲が到達すると、ボトルの単数形が使用されます。これに対応するために、私は三項演算子を使用して任意の時点で正しい場合を選択しました。それは三項演算子はfalseと評価さは明らかだ場合でも、しかし
、beer_bottles
カウントは私のプログラムで1に達し、最後の文はまだ、「ボトル」を出力します。
IRBの3進演算子をbeer_bottles = 1
でテストしたところ、誤ったオプション:「ボトル」が正しく出力されました。
これがなぜ発生するのか理解していただければ幸いです。
beer_bottles = 99
while beer_bottles >= 2 do
plural = "bottles"
singular = "bottle"
plural_or_singular = beer_bottles > 1 ? plural : singular
puts "#{beer_bottles} #{plural_or_singular} of beer on the wall, #{beer_bottles} #{plural_or_singular} of beer."
beer_bottles -= 1
puts "BOTTLE COUNT: #{beer_bottles}"
puts "Take one down and pass it around, #{beer_bottles} #{plural_or_singular} of beer on the wall."
end
Q:あなたは、あなたが実際にその時点で「1」に取り掛かりますか? Q:3桁を* AFTER *減分する必要がありますか? – paulsm4
whileループを2で停止します。これを減算した後、 'plural_or_singular'を再計算しません。それをさらに下に移動する必要があります。 –