假设我需要声明(但不是初始化)五个10x10数组的值,比如A1
- A5
。 Fortran对这种多数组声明有一个很好的语法:
REAL(8), DIMENSION(10,10) :: A1, A2, A3, A4, A5
然而,我所知道的朱莉娅唯一的方法更为丑陋:
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中声明多个具有相同维度的数组?
答案 0 :(得分:10)
感谢来自another question的@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对此想法/实施的评论。
答案 1 :(得分:1)
假设可以创建一个包含结果五个数组的临时数组,可以使用数组解析:
A1, A2, A3, A4, A5 = [Array(Float64, 10, 10) for i = 1:5]