указывает на другое место в памяти. Теперь это понятнее?

юлию используяКнига Иво Бальберта, Он использует следующий пример:

anon = Array{Any}(undef, 2)
for i = 1:2
    anon[i] = () -> println(i)
    i += 1
end

Теперь вызов двух функций в этом массиве выводит:

julia> anon[1](); anon[2]()
2
3

Я не понимаю, почему на выходе 2, 3 вместо 1, 2. При первом проходе через циклi = 1, так чтоanon[1] = () -> println(1), Автор продолжает:

Здесь обаanon[1] а такжеanon[2] являются анонимными функциями Когда они вызваны сanon[1]() а такжеanon[2]()они печатают2 а также3 (значения i, когда они были созданы плюс один).

Ожидаемое поведение затем достигается с помощьюlet, Однако в этом объяснении мне не хватает того, как действуют правила определения объема Юлии, чтобы получить первый (неожиданный) результат 2, 3. Другими словами, как получаются значения 2 и 3? Может кто-нибудь объяснить это? Спасибо!

Ответы на вопрос(1)

Ваш ответ на вопрос