在Ada中将值分配给其他关键字

在Ada中将值分配给其他关键字,ada,Ada,我对使用ADA有疑问 others := (others := -1) 这句话有效吗。如果无效,为什么无效?首先,others是保留的Ada关键字,因此不能将其用作变量名`others’关键字定义选项列表中的其余选项 假设这是一个意外的错误,你想做的是: other := (other := -1) 这不起作用,赋值运算符不返回值,因此other:=-1不是值,因此无法赋值 但另一方面,如果other的类型为boolean,则以下类似内容是有效的: other := (other = fal

我对使用ADA有疑问

others := (others := -1)
这句话有效吗。如果无效,为什么无效?

首先,others是保留的Ada关键字,因此不能将其用作变量名`others’关键字定义选项列表中的其余选项

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

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

但另一方面,如果other的类型为boolean,则以下类似内容是有效的:

other := (other = false);
在这种情况下,比较运算符=返回一个布尔值,然后将该值分配给变量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;

第二个似乎与您写的内容最接近,假设其他两个事件都是关键字。代码段中的主要错误是a需要使用=>而不是:=,b即使有了更改,代码段本身也是无效的;它需要上下文。

你认为它可能意味着什么?你想干什么?