gpt4 book ai didi

ruby - "or"和 | 之间有什么区别?在 ruby ?

转载 作者:数据小太阳 更新时间:2023-10-29 07:51:45 26 4
gpt4 key购买 nike

我认为唯一的区别在于 ||| 之间,其中 | 等同于 。但我意识到后者是不正确的,现在我很困惑。

修改:我理解这个问题不同于ruby bitwise or而我的是对评论和答案中指出的按位运算符和 bool 运算符之间的区别缺乏理解。此外,在我看来,这个问题的答案与问题本身更加相关和清晰。标记为重复会阻止用户获得更好的答案。

最佳答案

| 运算符是一个二进制数学 运算符,即它执行二进制 OR 并在数字级别上工作:

1 | 2
# => 3
4 | 3
# => 7
1 | 2 | 3
# => 3

这是因为它在处理单个值时就好像它们是二进制的一样:

0b01 | 0b10
# => 3 (0b11)

|| 运算符是一个逻辑 运算符,即它返回逻辑上为真的第一个值。在 Ruby 中,只有文字 nilfalse 值在逻辑上计算为假,其他所有内容,包括 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com