2013-09-25 37 views
0

這裏的問題:「寫,打印的數字從1到100,但對於三種打印倍數程序‘菲斯’,而不是數量和五個打印的倍數‘嗡嗡’對。數字是三個和五個印刷品「FizzBu​​zz」的倍數。「紅寶石FizzBu​​zz和/或

我的代碼下面的作品,但我不明白爲什麼,在最後一行,它爲f || b而不是f & b?

不應同時F和B必須是真理,以恢復FizzBu​​zz,而不是F或B'

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

你是如何設法寫出你不明白的工作代碼的? – Blorgbeard

+0

只需通過紙上的代碼來處理像'3','5','15'和'1'這樣的'i'的值。 – millimoose

+0

我試過&第一次,因爲我認爲它會起作用。然後我嘗試||它的工作。這就是我管理的方式。 – hopheady

回答

3

f || b爲真,如果f不爲空b不爲空,或兩者兼而有之,因爲這是OR的定義的一部分。

如果該表達式爲真,則我們打印"#{ f }#{ b }",其將打印任FizzBuzz,或FizzBuzz取決於fb(或兩者都不是)是否爲空,因爲空變量將與空字符串來代替。