gpt4 book ai didi

ruby - (Ruby) sort=1,rating=0,(sort&&rating) == 1 返回真还是假?

转载 作者:太空宇宙 更新时间:2023-11-03 18:26:00 26 4
gpt4 key购买 nike

更新:我输错了 2 个变量...太尴尬了。感谢大家的努力!

抱歉,我发现我为 2 个不同的环境输入了错误的值,第一个我设置了 sort = 0rating=1 但后来在 irb 中我设置了 sort=1rating=0。因为对于 a 和 b,当 a=1 时它只评估 b 所以在第二种情况下我得到 false。现在很清楚了。抱歉粗心,感谢大家的努力!

======================

我的问题:我有 2 个变量,sortrating,但是 sort&&rating == 1sort and rating ==1在 2 个不同的环境中表现不同,如下所示:

第一,当我执行rails server --debug时,在rails的调试器环境中,它们都返回true:

(rdb:130) rating 
1
(rdb:130) sort
0
(rdb:130) sort and rating == 1
true
(rdb:130) sort && rating == 1
true
(rdb:130) (sort && rating) == 1
true

2,在正常的irb中,它们都返回false:

irb(main):001:0> sort = 1
=> 1
irb(main):002:0> rating = 0
=> 0
irb(main):003:0> sort||rating
=> 1
irb(main):004:0> sort and rating
=> 0
irb(main):005:0> sort and rating == 1
=> false
irb(main):006:0> sort && rating == 1
=> false
irb(main):007:0> 0 == true
=> false
irb(main):008:0>

我知道 Ruby 是如此动态,以至于...这种情况可能吗?

最佳答案

是的,这种情况是可能的,01被评估为数字(Fixnum类)所以它们都不同于。任何不为假的都必须为 true(nil 除外)。

您可以使用 .zero? 方法隐式转换为 boolean

此外运算符||&& 不同于orand。后者的优先级低于赋值,所以当你输入时

sort and rating

实际发生的是该语句并没有像您想象的那样执行,因为只计算了第二个操作数(因此只有它的值作为结果被压入)。

想想

ruby-1.9.2-head > 4 and 3
=> 3
ruby-1.9.2-head > 3 and 4
=> 4

关于ruby - (Ruby) sort=1,rating=0,(sort&&rating) == 1 返回真还是假?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10973850/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com