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