在Ada中将值分配给Others关键字

时间:2016-03-19 01:40:08

标签: ada

我对使用ADA有疑问。

others := (others := -1)

此声明是否有效。如果无效,为什么无效?

2 个答案:

答案 0 :(得分:1)

首先,others是一个保留的Ada关键字,因此您不能将其用作变量名。 `别人' keyword定义选项列表中的其余选项。

假设这是一个意外的错误,你打算做的是:

other := (other := -1)

这不会起作用,赋值运算符不返回值,因此other := -1不是值,因此无法赋值。

另一方面,如果其他类型是布尔值,则类似下面的内容是有效的:

other := (other = false);

在这种情况下,比较运算符=返回一个布尔值,然后将其赋值给变量other。

答案 1 :(得分:1)

others := (others := -1)

不,那是无效的。这是一个语法错误(你可以通过编译找到它)。

很难说出它应该是什么,但这是有效的:

procedure Foo is
    A: array(1 .. 10) of Integer;
begin
    A := ( others => 42 );    
end Foo;

这就是:

procedure Foo is
    A2: array(1 .. 10, 1 .. 10) of Integer;
begin
    A2 := ( others => ( others => 42 ) );
end Foo;

第二个似乎与你所写的最接近,假设两个others的出现都是关键词。您的代码段中的主要错误是(a)您需要使用=>而非:=,以及(b)即使进行了此更改,代码段本身也无效;它需要背景。