我不明白这些的语法:
@myVar = @myVar | 2
if @myVar & 3 == 3
为什么它们不同于:
@myVar = 2
if @myVar == 3
答案 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
第一行再次由实例变量,赋值和整数文字组成,第二行在语法上也是无效的。