在 Ada 中为 Others 关键字赋值

Assigning values to Others keyword in Ada

我对使用 ADA 有疑问。

others := (others := -1)

这个说法是否有效。如果无效,为什么无效?

首先,others是Ada的保留关键字,不能作为变量名使用。 `others' 关键字定义选项列表中的其余选项。

假设这是一个无意的错误,而你想要做的是这样的:

other := (other := -1)

这行不通,赋值运算符没有 return 值,因此 other := -1 不是值,因此无法赋值。

另一方面,鉴于 other 的类型是布尔值,类似下面的内容是有效的:

other := (other = false);

在这种情况下,比较运算符 = return 是一个布尔值,然后将其分配给变量 other。

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) 即使进行了更改,该片段本身也无效;它需要上下文。