作者nohaha (不是開玩笑的)
站內Ruby
標題[問題] AND operator
時間Fri May 2 11:50:37 2014
小弟是新手,目前讀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後者相同
可以請教一下原因嗎? 感謝
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 49.159.64.175
※ 文章網址: http://webptt.com/m.aspx?n=bbs/Ruby/M.1399002639.A.4F3.html
1F:推 mars90226:and前面是false的話,就是false,不是的話,就是後面那 05/02 13:00
2F:→ mars90226:個,所以0 and 1就是1 05/02 13:00
3F:→ mars90226:應該說,and不會回傳true或false,而是回傳值 05/02 13:01
4F:→ mars90226:所以0 and 1不是回傳true,而是1,不過1也是"truthy" 05/02 13:02
5F:→ nohaha:!!!整個通了,我懂了,謝謝樓上 05/02 13:18
6F:推 AIGecko:上面那些其實就是 true and 1 這種感覺吧 05/02 14:38
7F:→ nohaha:瞭解了,因為之前不知道and回傳的到底是什麼屬性 05/02 15:24
8F:→ uranusjr:順帶一提 or 也有類似效果 05/02 21:51
9F:→ nohaha:而且我發現,用puts 0 and 1時,會因為優先權影響結果 05/02 23:38
10F:→ nohaha:再加上or一起看,整個會變的很困惑 05/02 23:38
11F:→ danny8376:其實不少高階語言都有這特性 05/03 02:00
12F:→ danny8376:這類邏輯運算結果不會是T/F 而是把最後的值吐出來 05/03 02:01