2016-02-10 99 views
-1

我不明白這些語法:`|`和`&是什麼意思?

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

爲什麼他們不同:

@myVar = 2 
if @myVar == 3 
+2

這些是按位運算符,不是布爾運算符。 – eugen

回答

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

如果myVar的最初是0,這會做​​這等於2

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

will do myVar & 3 and將檢查結果是否等於3

@myVar = 2 
if @myVar == 3 

這是完全不同的,沒有運算符(oter than = 2)被應用。所以結果總是一樣的。它總是將2分配給myVar,並檢查它是否等於3。你可能也已經寫if 2 == 3

+0

OP詢問了語法,但你解釋了語義。 –

+0

@JörgWMittag:arrrggg ... :-) – Stefan

+0

但是爲什麼如果在@ @ myVar |之前'@ myvar'爲零(未定義) 2'結果是'真'? – markzzz

1

我是新來的Ruby和我不明白這些語法:

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

有幾個語法元素的第一行:

  • foo = bar分配
  • @foo是一個實例變量
  • foo | bar二進制綴運算符,和類似的(幾乎所有的)二進制中綴運算符(具有||例外,&&and,和or),它是用於foo.|(bar)語法糖,即發送該消息|到通過評估foo通過評估bar獲得的對象作爲單個參數獲得的對象。
  • 2整數字面值

第二行在語法上無效。

爲什麼有從不同:

@myVar = 2 
if @myVar == 3 

第一行再次由一個實例變量,分配,和文字的整數,第二線又在語法上是無效的。