作者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/cn.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