`&&`总是在Ruby中的同一行`if`之前运行

时间:2016-09-29 17:44:33

标签: ruby if-statement

每个&&if之前运行在Ruby的同一行吗?

例如:

@building.approved = params[:approved] if xyz && abc && mno...

在不使用括号的情况下,&&的右侧可以使用无限数量的if吗?

我倾向于使用括号,但我想了解默认行为。

1 个答案:

答案 0 :(得分:2)

if之后的所有内容都必须凭借语法成为条件的一部分。解决这个问题的唯一方法是真正具体:

(@building.approved = params[:approved] if xyz) && abc && ...

这显然不是你想要的。

运算符绑定强度不是问题,因为if是语法元素而不是运算符,因此它具有绝对最低优先级。

将评估的唯一条件是产生逻辑错误值的条件,或者在逻辑上为真的之后作为第一个返回的条件>逻辑错误将停止链。

那是:

if a && b && c

如果这是一个逻辑错误值,将停在a。不会评估bc。但链接没有内在限制。