0

问题是:“编写一个打印从 1 到 100 的数字的程序。但是对于三的倍数打印“Fizz”而不是数字,对于五的倍数打印“Buzz”。对于同时是三和三的倍数的数字五印“FizzBu​​zz”。”

我下面的代码有效,但我不明白为什么最后一行是 f || b 而不是 f & b?

为了返回 FizzBu​​zz,不应该 f 和 b 都必须为真,而不是 f OR 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如果f不为空 b不为空,或两者兼有,则为真,因为这是 OR 定义的一部分。

如果该表达式为真,那么我们 print "#{ f }#{ b }",它将打印, 或 ,Fizz这取决于或(或两者都不是)是否为空,因为空变量将被替换为空白字符串。BuzzFizzBuzzfb

于 2013-09-25T02:15:40.990 回答