2012-10-11 115 views
2

我有一些代碼,我正在調試使用這個操作符,我不知道它爲什麼被使用。這個操作符在ruby中做了些什麼? << =

它似乎將追加到一個數組的對象。如果那是我唯一不知道爲什麼工程師不會簡單地使用'< <'操作員。有什麼不同?

謝謝!

+6

一個如何使用它的例子可能有助於給出上下文。 – Shmiddty

+1

問工程師?它稍微昂貴一些,並給出了相同的結果(對於陣列,對於移位它可能是有意義的,因爲移位不會修改原始值) – UncleGene

回答

3

它並不總是<<修改目標的情況:它可能是很重要的結果。有關行爲的實際類型,請參閱API。

的整數的比特移位不具有副作用(計算被丟棄,除非它被分配/使用):陣列

a = 1 
a << 2 
a # => 1 
a <<= 2 
a # => 4 

但是<<確實有副作用效果(和<<=只想執行無用分配隱藏操作的副作用性質):

b = [1] 
b << 2 
b # => [1,2] 

在極少數情況下,它可能「聰明」與存取使用obj.prop <<= val的影響的操作,因爲它會調用 getter和二傳手 - 和二傳手可能包含的邏輯。但是,我在這裏使用「聰明」而不是「好」這個詞是因爲某種原因:)