我正在调试一些使用此运算符的代码,但我不确定为什么要使用它。
它似乎将对象附加到数组中。如果仅此而已,我不知道为什么工程师不简单地使用“<<”运算符。有什么不同?
谢谢!
修改目标的情况并不总是这样<<
:它可能是重要的结果。请查阅 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 可能包含逻辑。然而,我在这里使用“聪明”这个词而不是“好”是有原因的:)