我认为唯一的区别在于 |
和 ||
之间,其中 |
等同于 或
。但我意识到后者是不正确的,现在我很困惑。
修改:我理解这个问题不同于ruby bitwise or而我的是对评论和答案中指出的按位运算符和 bool 运算符之间的区别缺乏理解。 此外,在我看来,这个问题的答案与问题本身更加相关和清晰。标记为重复会阻止用户获得更好的答案。
最佳答案
|
运算符是一个二进制数学 运算符,即它执行二进制 OR 并在数字级别上工作:
1 | 2
# => 3
4 | 3
# => 7
1 | 2 | 3
# => 3
这是因为它在处理单个值时就好像它们是二进制的一样:
0b01 | 0b10
# => 3 (0b11)
||
运算符是一个逻辑 运算符,即它返回逻辑上为真的第一个值。在 Ruby 中,只有文字 nil
和 false
值在逻辑上计算为假,其他所有内容,包括 0
、空字符串和数组,都是真。
所以:
1 || 2
# => 1
0 || 1
# => 0
or
运算符的工作原理几乎与 ||
完全相同,只是它的优先级低得多。这意味着首先评估其他运算符,如果您没有预料到这一点,可能会导致一些问题:
a = false || true
# => true
a
# => true
a = false or true
# => true
a
# => false
这是因为它实际上被解释为:
(a = false) or true
这是因为 =
有一个 higher precedence评价时。
关于ruby - "or"和 | 之间有什么区别?在 ruby ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45043727/