2010-03-30 19 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