2012-10-11 71 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和二传手 - 和二传手可能包含的逻辑。但是,我在这里使用“聪明”而不是“好”这个词是因为某种原因:)