Ada 如何通过一次更改将记录x分配给记录y?
以以下为例:Ada 如何通过一次更改将记录x分配给记录y?,ada,Ada,以以下为例: type MyArray is array(1..10) of Float; type MyRecord is record a: Float; b: Integer; c: Boolean; d: MyArray; end record; … function foo(x: MyRecord) return MyRecord is y: MyRecord := x; begin
type MyArray is array(1..10) of Float;
type MyRecord is record
a: Float;
b: Integer;
c: Boolean;
d: MyArray;
end record;
…
function foo(x: MyRecord) return MyRecord is
y: MyRecord := x;
begin
y.b = -1;
return y.b;
end foo;
如果我能用foo
做这样的事情,那就太好了:
function foo(x: MyRecord) return MyRecord is
(x with (b => -1));
其中,更简单的表示法(不是有效的Ada)允许我将
foo
作为表达式函数编写。在Ada中有这样的方法吗?好吧,Ada202x正在研究基本上你想要的东西。在此之前,我唯一能想到的两个选择是:
普通旧骨料:
函数foo1(x:MyRecord)返回的MyRecord为
(a=>x.a,b=>1,c=>x.c,d=>x.d);
延长回报:
函数foo2(x:MyRecord)返回的MyRecord为
开始
返回结果:MyRecord:=x do
结果b:=-1;
末端返回;
完二日;;
我知道ExtendedReturn并不能得到您想要的表达式函数,但它是一种更好的语法,可以以有趣的方式与有限的类型一起使用。现在,您将不得不依赖于普通的旧聚合语法。好吧,Ada202x正在研究您本质上想要的语法。在此之前,我唯一能想到的两个选择是: 普通旧骨料:
函数foo1(x:MyRecord)返回的MyRecord为
(a=>x.a,b=>1,c=>x.c,d=>x.d);
延长回报:
函数foo2(x:MyRecord)返回的MyRecord为
开始
返回结果:MyRecord:=x do
结果b:=-1;
末端返回;
完二日;;
我知道ExtendedReturn并不能得到您想要的表达式函数,但它是一种更好的语法,可以以有趣的方式与有限的类型一起使用。现在,您将不得不依赖普通的旧聚合语法