多維迭代

在 Julia 中,for 迴圈可以包含一個逗號(,)來指定迭代多個維度。這類似於將迴圈巢狀在另一個迴圈中,但可以更緊湊。例如,下面的函式生成兩個迭代的笛卡爾積的元素 :

function cartesian(xs, ys)
    for x in xs, y in ys
        produce(x, y)
    end
end

用法:

julia> collect(@task cartesian(1:2, 1:4))
8-element Array{Tuple{Int64,Int64},1}:
 (1,1)
 (1,2)
 (1,3)
 (1,4)
 (2,1)
 (2,2)
 (2,3)
 (2,4)

但是,應該使用 eachindex 對任何維度的陣列進行索引,而不是使用多維迴圈(如果可能):

s = zero(eltype(A))
for ind in eachindex(A)
    s += A[ind]
end