多维迭代
在 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