2014-08-28 25 views
2

如果有以下陣列差工作時不變量

a = [1,2,3] 
b = [3,4,5] 

a&b #=> [3] 
b - a&b #=> [4,5] 
b - a #=> [4,5] 

爲什麼這項工作

[1,2,3] - [3] #=> [1,2] 

,但不是這個

a - a&b #=> [] ?? 
+0

好Goggly!我喜歡它。 :-) – 2014-08-28 10:04:53

回答

5

因爲-具有更高的優先級,這裏比&

a - (a&b) 
# => [1, 2] 
+0

whaaaaaa,這不應該符合數學precendece? – 2014-08-28 09:07:45

+0

@NickGinanto:在數學中,混合算術運算符和布爾運算符是沒有意義的。如果它符合「數學優先級」,它很可能是一個「TypeError」。 – 2014-08-28 10:34:29

2
2.1.2 :006 > a - a&b 
=> [] 
2.1.2 :007 > a - (a&b) 
=> [1, 2] 

您可以從here得到紅寶石運算符優先級表。