Ruby语言中的or
和||
操作符有什么不同?或者这只是一个偏好?
发布于 2010-01-18 07:38:02
这是运算符优先级的问题。
||
比or
具有更高的优先级。
因此,在这两者之间还有其他运算符,包括三元运算符(? :
)和赋值运算符(=
),因此您选择哪个运算符可以影响语句的结果。
这是一个ruby operator precedence table。
有关使用and
/&&
的另一个示例,请参阅this question。
另外,要注意可能会发生的一些糟糕的事情:
a = false || true #=> true
a #=> true
a = false or true #=> true
a #=> false
前两个语句的计算结果都是true
,但第二个语句将a
设置为false
,因为=
优先级低于||
但高于or
。
发布于 2014-04-09 13:22:12
and
/or
是用于控制流的。
Ruby不允许将其作为有效语法:
false || raise "Error"
然而,这是有效的:
false or raise "Error"
您可以使用()
实现第一种方法,但使用or
是正确的方法。
false || (raise "Error")
发布于 2015-07-20 02:15:07
我使用这些运算符的方式如下:
||, &&
用于布尔逻辑。or, and
用于控制流。例如。
do_smth if may_be || may_be
--我们在这里评估条件
do_smth or do_smth_else
--我们定义工作流,它等同于do_smth_else unless do_smth
举个简单的例子:
> puts "a" && "b"
b
> puts 'a' and 'b'
a
Rails中的一个众所周知的习惯用法是render and return
。这是说return if render
的快捷方式,而render && return
不起作用。有关更多信息,请参阅Rails文档中的"Avoiding Double Render Errors“。
https://stackoverflow.com/questions/2083112
复制相似问题