0

問題は次のとおりです。「1 から 100 までの数字を出力するプログラムを作成します。ただし、3 の倍数の場合は数字の代わりに「Fizz」と出力し、5 の倍数の場合は「Buzz」と出力します。 5枚プリント「FizzBu​​zz」。

以下のコードは機能しますが、最後の行で f || になっている理由がわかりません。f&bではなくb?

FizzBu​​zz を返すには、f OR b ではなく、f AND b の両方が真でなければならないのではないでしょうか?

puts (1..100).map {|i|
  f = i % 3 == 0 ? 'Fizz' : nil
  b = i % 5 == 0 ? 'Buzz' : nil
  f || b ? "#{ f }#{ b }" : i
}
4

1 に答える 1

3

f || bは、OR の定義の一部であるため、null でないか、null でないか、またはその両方f場合に trueになります。 b

その式が true の場合、null 変数は空白の文字列に置き換えられるため、null であるかどうか(またはどちらでもない)に応じて、 、、または の"#{ f }#{ b }"いずれかを出力します。FizzBuzzFizzBuzzfb

于 2013-09-25T02:15:40.990 に答える