2014-09-25 41 views
2

假設我需要聲明(但不初始化)五個10x10數組,名稱爲A1 - A5。 Fortran語言有這種多重數組聲明的一個很好的語法:在Julia中聲明多個數組

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中有多個相同維度的數組?

回答

8

感謝來自@simonster一些幫助another question你可以簡潔地聲明變量沒有任何運行時開銷中的元編程,

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對此想法/實現的評論。

+0

非常感謝! 8-)感謝@simonster讓我們開始。 – rickhg12hs 2014-10-08 20:09:52

1

假設它的確定以創建一個臨時列保持所產生的5個陣列,你可以使用數組的理解:

A1, A2, A3, A4, A5 = [Array(Float64, 10, 10) for i = 1:5]