我定义了一个类型:
type Foo is record
bar : Positive;
end record;
我想创建一个返回记录实例的函数:
function get_foo return Foo is
return (1);
end get_foo;
但艾达不让我这么做,她说“位置聚合不能有一个参数”。
愚蠢地尝试,我在记录中添加了另一个愚蠢的字段,然后return (1, DOESNT_MATTER);
works!
我如何告诉 Ada 这不是位置聚合,而是创建记录的尝试?
位置聚合初始化不能用于只有一个组件的记录,但这并不意味着您不能拥有只有一个组件的记录。
记录类型的值是通过给出命名字段的列表来指定的。适合您的正确代码get_foo
功能应如下所示。
function get_foo return Foo is
return (bar => 1);
end get_foo;
您还可以使用以下命令指定记录的类型Foo'(bar => 1)
表达。
在实践中,使用命名组件列表比位置初始化更好。您可能会忘记该组件的位置,并且如果您在记录中添加新字段,该位置也不会改变。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)