我知道在Ruby中,所有数字(包括零)在条件语句中使用时都会计算为true。但是,调用什么方法来执行此评估(参见下面的例2)?我认为它可能是==运算符,但不是因为它们会返回相反的结果。
示例1:等式方法计算零到假
>> puts "0 is " << (0 == true ? "true" : "false")
0 is false
示例2:单独的零值评估为真,因为它不是零
>> puts "0 is " << (0 ? "true" : "false")
0 is true
答案 0 :(得分:1)
在与对象true
相等的意义上,它们不会“评估为真”。除了nil
和false
之外的所有对象都是,当它们是条件的值时,它们被视为逻辑真实。这个想法有时表达为 truthy 。
所以,是的,测试相等性使用==
运算符。由于同样的原因,0
和29
是真实的,因此"Hi, I'm a string"
或nil
不是false
。
答案 1 :(得分:0)
0 == true # evaluates to false => ergo "false"
VS
0 # bare zero before the ? is evaluated using ruby truthiness and since it is not false or nil, "true" is returned