将`和`与作业

时间:2015-11-30 15:20:43

标签: ruby logical-operators operator-precedence

我希望以下内容评估(a < b)以及(b < c)并返回no

a = 1
b = 4
c = 3
@test = (a < b) and (b < c)
if @test
  puts "yes"
else
  puts "no"
end

我没有得到我期望的行为。它返回yes,似乎只评估(a < b)而不是(b < c)。我认为问题出在and

1 个答案:

答案 0 :(得分:5)

您使用and代替&&,实际上,您将@test设置为(a<b)的结果,而不是(a<b) and (b<c)({{1}优先级高于=,而and的优先级高于&&。)