Julia 闭包,匿名函数,为什么不在创建它们时作为值

Julia 闭包,匿名函数,为什么不在创建它们时作为值,julia,Julia,在Julia 1.0中运行以下代码段 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不会影响for循环。给出了一个解释:对于每个循环,Julia都为I分配一个新的绑定,因此在每次迭代中I指向不同的内存位置

在Julia 1.0中运行以下代码段

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
不会影响
for
循环。

给出了一个解释:对于每个循环,Julia都为
I
分配一个新的绑定,因此在每次迭代中
I
指向不同的内存位置