указывает на другое место в памяти. Теперь это понятнее?
юлию используяКнига Иво Бальберта, Он использует следующий пример:
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? Может кто-нибудь объяснить это? Спасибо!