怎样写一个构建多层循环的宏?

在编写处理多维数据的函数时,经常要对每个维度进行循环。
但是这个维度是变化的,对于不同的维度,其核心代码都是一样的,只要在外面再套一层for循环就行。
不同维度的遍历范围都是已知的,怎样写个宏能根据给定的层数和范围生成外层的for循环呢?
如下面的例子:
p为循环变量,L为各维度的步长,N为各维度的end。如何生成类似下面的结构?

p=zeros(n)
for p[1]=1:L[1]:N[1]
    for p[2]=1:L[2]:N[2]
        ...
        for p[n]=1:L[n]:N[n]
            balaba
        ...
    end
end

@generated function + Base.Cartesian

1 个赞

太好了,谢谢你,我看看怎么改 :wink: