我对使用ADA有疑问。
others := (others := -1)
此声明是否有效。如果无效,为什么无效?
答案 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)即使进行了此更改,代码段本身也无效;它需要背景。