在Julia中声明多个数组

4
假设我需要声明(但不初始化值)五个10x10的数组,分别命名为A1-A5。Fortran有一种很好的语法来进行多个数组的声明:
REAL(8), DIMENSION(10,10) :: A1, A2, A3, A4, A5

然而,我所知道的 Julia 中唯一的方法要丑陋得多:

A1 = Array(Float64, 10, 10)
A2 = Array(Float64, 10, 10)
A3 = Array(Float64, 10, 10)
A4 = Array(Float64, 10, 10)
A5 = Array(Float64, 10, 10)

在Julia中,有没有更加简洁的方式声明多个相同维度的数组?

2个回答

10

另一个问题中,得到了@simonster的帮助,您可以使用元编程简洁地声明变量,而不会有任何运行时开销。

for x = [:A1,:A2,:A3,:A4,:A5]
    @eval $x = Array(Float64,10,10)
end

然而,我们现在可以比Fortran更进一步,允许您动态生成名称:

for x in [symbol("A"*string(i)) for i=1:100]
    @eval $x = Array(Float64,10,10)
end

这将分配100个数组A1-A100。感谢@rickhf12hs的评论提供了这个想法/实现。


感谢您的感谢!8-) 感谢@simonster为我们提供了帮助。 - rickhg12hs

1
假设创建一个临时数组来保存结果数组是可以的,您可以使用数组推导式:
假设创建一个临时数组来保存结果数组是可以的,您可以使用数组推导式:
A1, A2, A3, A4, A5 = [Array(Float64, 10, 10) for i = 1:5]

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接