ruby布尔运算符或|| 差异

可能重复:
Ruby:||之间的区别 和’或’

在ruby中,不是’或’和’||’ 同一件事情? 我执行代码时会得到不同的结果。

line ="" if (line.start_with? "[" || line.strip.empty?) puts "yes" end line ="" if (line.start_with? "[" or line.strip.empty?) puts "yes" end 

不,这两个运营商具有相同的效果,但优先级不同。

|| 运算符具有非常高的优先级,因此它与先前的值非常紧密地绑定。 or运算符的优先级非常低,因此它的绑定程度低于其他运算符。

拥有两个版本的原因正是一个具有高优先级而另一个具有低优先级,因为这很方便。

在第一种情况下,您使用了|| 由于其他答案的优先级很好,因此在声明中先于其他任何内容进行评估,使其更加清晰,添加了一些括号,您的第一个声明如下:

 (line.start_with? ("[" || line.strip.empty?)) 

转换为

 (line.start_with? ("[")) 

结果为假

另一方面,你的第二个陈述转化为

 ((line.start_with? "[") or line.strip.empty?) 

转换为

 (FALSE or TRUE) 

结果是真的

这就是我每次调用函数时尝试使用括号的原因。 🙂

丹尼尔是对的,更清楚:

 if (line.start_with?("[") || line.strip.empty?) puts "yes" end 

会产生yes