【发布时间】:2013-09-25 02:10:12
【问题描述】:
问题是:“编写一个程序,打印从 1 到 100 的数字。但是对于 3 的倍数,打印“Fizz”而不是数字,对于 5 的倍数,打印“Buzz”。对于是三个和五个都打印“FizzBuzz”。”
我下面的代码有效,但我不明白为什么最后一行是 f || b 而不是 f & b?
为了返回 FizzBuzz,不应该 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
}
【问题讨论】:
-
你是怎么写出你不懂的工作代码的?
-
只需在纸上处理
i值的代码,例如3、5、15和1。 -
我先尝试了 &,因为我认为它会起作用。然后我尝试了||它奏效了。我就是这样管理的。
-
请注意,
&不是||的伴侣,&&是。 (&是 bitwise and,不是布尔值。它的同伴是|。)