`|`和`&'是什么意思?

时间:2016-02-10 10:30:49

标签: ruby

我不明白这些的语法:

@myVar = @myVar | 2
if @myVar & 3 == 3

为什么它们不同于:

@myVar = 2
if @myVar == 3

2 个答案:

答案 0 :(得分:2)

@myVar = @myVar | 2  //bitwise or operator

如果myVar最初为0,则0 | 2等于2.

if @myVar & 3 == 3 // bitwise AND, and boolean compare

将做myVar& 3并将检查结果是否等于3

@myVar = 2
if @myVar == 3

这完全不同,没有运算符(oter than = 2)。所以结果总是一样的。它总是将2分配给myVar,然后检查它是否等于3。你也可以写if 2 == 3

答案 1 :(得分:1)

  

我是ruby的新手,我不明白这些的语法:

@myVar = @myVar | 2
if @myVar & 3 == 3

第一行中有几个句法元素:

  • foo = bar作业
  • @foo实例变量
  • foo | bar二进制中缀运算符,和(几乎所有)二进制中缀运算符一样(||&&,{{1除外} {和and),它是or的语法糖,即将消息foo.|(bar)发送到通过评估|传递通过评估{{}获得的对象获得的对象1}}作为单个参数。
  • foo整数文字

第二行在语法上无效。

  

为什么会有不同之处:

bar

第一行再次由实例变量,赋值和整数文字组成,第二行在语法上也是无效的。