请看以下示例:
类型MyArray是Float的数组(1..10); 类型MyRecord是记录 a:漂浮; b:整数; c:布尔值; d:MyArray; 结束记录; 锟斤拷 功能……
好吧,Ada202x正在努力 Delta Aggregates 这本来就是你想要的。在那之前,我能想到的唯一两个选择是:
普通旧聚合:
function foo1(x : MyRecord) return MyRecord is (a => x.a, b => -1, c => x.c, d => x.d);
延期回报:
function foo2(x : MyRecord) return MyRecord is begin return Result : MyRecord := x do Result.b := -1; end return; end foo2;
我知道扩展返回不会得到你想要的表达式函数,但它是一个更好的语法,可以用有限的类型以有趣的方式使用。现在你将不得不依赖普通的旧聚合语法。