作者:
nohaha (不是開玩笑的)
2014-05-02 11:50:37小弟是新手,目前讀learn ruby the hard way到ch37
在查詢and operator用法時出現一些困惑,想請各位幫忙釋疑
在the ruby programming language中讀到
1.
ruby中,只有true/false為內建的boolean type變數
在ruby中,除了false、nil在作判斷時,會被視為false
其餘皆為true (包含 true/ 任何的fixnum / 0 / Nan / [] / {} )
2.
ruby有short-cicuiting的特性
當and前的值,為false,則無視and後的值為何,此式為false
(e.g. if false and true => 結果為false)
當or前的值為true,則無視and後的值為何,此式為true
(e.g. if true or false =>結果為true)
這部分我懂,但當拿fixnum來作運算時,我就不能理解結果了
0 and 0 #=> 0
0 and 1 #=> 1
1 and 0 #=> 0
1 and 1 #=> 1
試著換成更大的值
0 and 0 #=> 0
0 and 4 #=> 4
4 and 0 #=> 0
4 and 4 #=> 4
看結果的話,and的結果,似乎跟and後者相同
可以請教一下原因嗎? 感謝
and前面是false的話,就是false,不是的話,就是後面那個,所以0 and 1就是1應該說,and不會回傳true或false,而是回傳值所以0 and 1不是回傳true,而是1,不過1也是"truthy"
作者: nohaha (不是開玩笑的) 2014-05-02 13:18:00
!!!整個通了,我懂了,謝謝樓上
作者:
AIGecko (師大貓耳控)
2014-05-02 14:38:00上面那些其實就是 true and 1 這種感覺吧
作者: nohaha (不是開玩笑的) 2014-05-02 15:24:00
瞭解了,因為之前不知道and回傳的到底是什麼屬性
作者:
uranusjr (â†é€™äººæ˜¯è¶…級笨蛋)
2014-05-02 21:51:00順帶一提 or 也有類似效果
作者: nohaha (不是開玩笑的) 2014-05-02 23:38:00
而且我發現,用puts 0 and 1時,會因為優先權影響結果再加上or一起看,整個會變的很困惑
作者:
danny8376 (釣到一隻猴子@_@)
2014-05-03 02:00:00其實不少高階語言都有這特性這類邏輯運算結果不會是T/F 而是把最後的值吐出來