每个&&
在if
之前运行在Ruby的同一行吗?
例如:
@building.approved = params[:approved] if xyz && abc && mno...
在不使用括号的情况下,&&
的右侧可以使用无限数量的if
吗?
我倾向于使用括号,但我想了解默认行为。
答案 0 :(得分:2)
if
之后的所有内容都必须凭借语法成为条件的一部分。解决这个问题的唯一方法是真正具体:
(@building.approved = params[:approved] if xyz) && abc && ...
这显然不是你想要的。
运算符绑定强度不是问题,因为if
是语法元素而不是运算符,因此它具有绝对最低优先级。
将评估的唯一条件是产生逻辑错误值的条件,或者在逻辑上为真的之后作为第一个返回的条件>逻辑错误将停止链。
那是:
if a && b && c
如果这是一个逻辑错误值,将停在a
。不会评估b
和c
。但链接没有内在限制。