我有一些代碼,我正在調試使用這個操作符,我不知道它爲什麼被使用。這個操作符在ruby中做了些什麼? << =
它似乎將追加到一個數組的對象。如果那是我唯一不知道爲什麼工程師不會簡單地使用'< <'操作員。有什麼不同?
謝謝!
我有一些代碼,我正在調試使用這個操作符,我不知道它爲什麼被使用。這個操作符在ruby中做了些什麼? << =
它似乎將追加到一個數組的對象。如果那是我唯一不知道爲什麼工程師不會簡單地使用'< <'操作員。有什麼不同?
謝謝!
它並不總是<<
修改目標的情況:它可能是很重要的結果。有關行爲的實際類型,請參閱API。
的整數的比特移位不具有副作用(計算被丟棄,除非它被分配/使用):陣列上
a = 1
a << 2
a # => 1
a <<= 2
a # => 4
但是<<
確實有副作用效果(和<<=
只想執行無用分配隱藏操作的副作用性質):
b = [1]
b << 2
b # => [1,2]
在極少數情況下,它可能是「聰明」與存取使用obj.prop <<= val
的影響的操作,因爲它會調用都 getter和二傳手 - 和二傳手可能包含的邏輯。但是,我在這裏使用「聰明」而不是「好」這個詞是因爲某種原因:)
一個如何使用它的例子可能有助於給出上下文。 – Shmiddty
問工程師?它稍微昂貴一些,並給出了相同的結果(對於陣列,對於移位它可能是有意義的,因爲移位不會修改原始值) – UncleGene