在Julia 1.0中运行以下代码段
var
结果为anon = Array{Any}(undef, 2)
for i = 1:2
anon[i] = ()-> println(i)
i += -1
end
anon[2]()
anon[1]()
和1
。为什么不创建0
和2
(创建时1
的值)?我知道i
不会影响i += -1
循环。
答案 0 :(得分:0)
Julia scoping specifics: defining closure within loop给出了一个解释: Julia每次循环都为Set(CurrentItem, { myProperty: 3 })
分配一个新的绑定,因此在每次迭代中i
指向不同的内存位置。