Ruby中的or和||操作符有什么区别?还是只是偏好?


当前回答

输出false或true——>输出:false

输出假|| true——>打印:true

其他回答

只是补充一下mopoke的答案,这也是一个语义学的问题。或者被认为是一个很好的实践,因为它读起来比||要好得多。

我使用这些操作符的方式:

||, &&是布尔逻辑。或,和用于控制流。如。

Do_smth if may_be || may_be——我们在这里计算条件

Do_smth或do_smth_else——我们定义工作流,这相当于 Do_smth_else除非do_smth

举个简单的例子:

> puts "a" && "b"
b

> puts 'a' and 'b'
a

Rails中一个著名的习语是呈现和返回。这是return if render的快捷方式,而render && return无效。更多信息请参见Rails文档中的“避免双重渲染错误”。

和/或用于控制流。

Ruby不允许这是有效的语法:

false || raise "Error"

然而,这是有效的:

false or raise "Error"

可以使用()实现第一个方法,但使用or是正确的方法。

false || (raise "Error")

或者和||不一样。只使用||操作符代替or操作符。

这里有一些原因。:

Or运算符的优先级比||低。 Or的优先级比=赋值操作符低。 和和或具有相同的优先级,而&&的优先级高于||。

如果其中一个操作数为真,则or和||都求值为真。只有当第一个操作数为假时,才计算第二个操作数。

与and一样,or和||之间的唯一区别是它们的优先级。

为了让生活更有趣,and和or具有相同的优先级,而&&的优先级高于||。