假设我需要声明(但不是初始化)五个10x10数组的值,比如说,A1- A5.Fortran为这种多数组声明提供了很好的语法:
REAL(8), DIMENSION(10,10) :: A1, A2, A3, A4, A5
Run Code Online (Sandbox Code Playgroud)
然而,我所知道的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)
Run Code Online (Sandbox Code Playgroud)
有没有更简洁的方法来声明Julia中相同维度的多个数组?
JKn*_*ght 10
感谢@simonster在另一个问题上提供的一些帮助,您可以使用元编程简洁地声明您的变量,而无需任何运行时开销,
for x = [:A1,:A2,:A3,:A4,:A5]
@eval $x = Array(Float64,10,10)
end
Run Code Online (Sandbox Code Playgroud)
但是,我们现在可以通过允许您动态生成名称来比Fortran做得更好一步:
for x in [symbol("A"*string(i)) for i=1:100]
@eval $x = Array(Float64,10,10)
end
Run Code Online (Sandbox Code Playgroud)
这将分配100个阵列A1-A100.感谢@ rickhf12hs对这个想法/实现的评论.