为什么这个if语句返回`true`?

时间:2015-07-24 09:13:30

标签: ruby

customer.id等于171。在我执行以下if语句后,它会返回"customer.id = 0"

customer.id #=>    171
if customer.id = 0
  puts "customer.id = 0" # => customer.id = 0
end

任何人都可以解释为什么会这样吗?

3 个答案:

答案 0 :(得分:4)

您正在进行作业:

if customer.id = 0

应该进行比较:

if customer.id == 0

答案 1 :(得分:1)

Ruby认为falsenil是唯一的两个“假”值,而其他一切都是“真实的”。这是根据定义,不能修改(至少在MRI中)。这个定义用于所有内置运算符,如if,除非,while,until,cond? if_truthy:if_falsey,||,&&,...

写时

if customer.id = 0  # customer.id = 0 will return 0
...
end

相同
if 0 # and 0 is truthy
...
end

答案 2 :(得分:0)

在Ruby中使用==执行等式测试。