2

我正在调试一些使用此运算符的代码,但我不确定为什么要使用它。

它似乎将对象附加到数组中。如果仅此而已,我不知道为什么工程师不简单地使用“<<”运算符。有什么不同?

谢谢!

4

2 回答 2

3

http://www.tutorialspoint.com/ruby/ruby_operators.htm

它看起来像是一个按位左移操作和赋值。

x <<= 2

是相同的

x = x << 2
于 2012-10-11T21:24:41.933 回答
3

修改目标的情况并不总是这样<<:它可能是重要的结果。请查阅 API 以了解与行为有关的实际类型。

整数的位移没有副作用(计算被丢弃,除非它被分配/使用):

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

但是<<在数组上确实有副作用(并且<<=只会执行一个无用的赋值1隐藏操作的副作用性质):

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

1在极少数情况下,使用访问器进行副作用操作可能是“聪明的”,因为它会同时obj.prop <<= val调用getter 和 setter - 并且 setter 可能包含逻辑。然而,我在这里使用“聪明”这个词而不是“好”是有原因的:)

于 2012-10-11T21:28:24.127 回答