2010-03-30 54 views
3

我需要一個820數組的數組來使用數學函數。在Ada中,如何使用重複的數字初始化數組常量?

在C我可以只寫了以下,編譯器將填補陣列:

const float EMPTY_NUMBER_A[820] = { 0.0, }; 

然而,在阿達那是不可能的。我真的不想將820元素硬編碼爲0.0。有沒有辦法讓編譯器做到這一點?

type Number_A is array (1 .. 820) of Float; 
EMPTY_NUMBER_A : constant Number_A := ???; 

使用Ada 95和GNAT。

+3

您已將C真的有那樣的功能?如果你想讓這個數組以0.0的雙精度值初始化,系統將整個內存區初始化爲全零字節看起來就像是一個0.0雙精度的數組。如果數組使用'{3.0,}'初始化,那麼該功能是否真的有效? – ndim 2010-03-30 00:43:44

回答

9

使用的aggregate

Empty_Number_A : constant Number_A := (others => 0.0); 
+0

更簡潔,然後我的41行每20個零。 – 2010-03-30 03:20:30

+2

這是非常強大的順便說一句。如果你想設置一切,但元素20爲0,你可以做'(20 => 17.5,others => 0.0)' – 2010-03-30 19:12:02

+1

另外,你可以說'(others => Ada.Numerics.Float_Random.Random(Gen)) '用隨機的花車來填充。當然,你必須首先設置發生器「Gen」。 – 2010-03-31 19:10:25