【发布时间】:2016-02-09 13:45:50
【问题描述】:
我必须更新一个数组,并且我在传递给Array#each_with_object 的块内的不同代码运行中使用了+= 和<<:
代码 1
(1..5).each_with_object([]) do |i, a|
puts a.inspect
a += [i]
end
输出:
[]
[]
[]
[]
[]
代码 2
(1..5).each_with_object([]) do |i, a|
puts a.inspect
a << [i]
end
输出:
[]
[1]
[1,2]
[1,2,3]
[1,2,3,4]
+= 运算符不会更新原始数组。为什么?我在这里错过了什么?
【问题讨论】:
-
不是
Array#each_with_object。接收者是一个范围。
标签: arrays ruby iterator immutability