Вот как for
-циклы работают внутренне в Юлии, здесь вам не о чем беспокоиться или исправлять, см. https://docs.julialang.org/en/v1/manual/interfaces/#man-interface-iteration-1.
В частности, вызов for
-loops iterate
для объекта, который вы перебираете, и возвращаете nothing
, если итератор выполнен, или кортеж с loopvariable, state
.Для этого конкретного случая iterate
из StepRange{Int,Int}
вы, таким образом, получаете Union{Nothing, Tuple{Int,Int}}
от iterate
звонка:
julia> @code_warntype iterate(3:5:20)
Body::Union{Nothing, Tuple{Int64,Int64}}
[...]