gpt4 book ai didi

ada - Ada 对象中的常量元素?

转载 作者:行者123 更新时间:2023-12-04 14:22:38 26 4
gpt4 key购买 nike

在 Java 或 C# 中,您经常会拥有 final 的类成员。或 readonly - 它们设置一次,然后再也不碰。它们可以为类的不同实例保存不同的值。

艾达有没有类似的东西?我试图在 Ada 中创建类似的东西:

package MyPackage is

type MyObject is limited new OtherPackage.Object with private;

....

private

type MyObject (...) is limited new OtherPackage.Object with
record
M_MyField : Integer := 10;
M_MyConstantFactory : constant Factory.Object'Class := new Factory.Object;
end record;

end MyPackage;

这在 M_MyConstantFactory 的声明中失败说 constant components are not permitted .有没有解决的办法?一位同事建议在包的其他地方声明它,但这意味着一个 M_MyConstantFactory在所有实例之间共享,这不是我想要的。

我是否需要接受一旦设置就可以修改值并手动防止这种情况发生?

最佳答案

不。不完全是。

如果您的组件是离散类型或访问类型,您可以将其设为判别式,从而使其不可变。

with Ada.Integer_Text_IO;

procedure Immutable_Components is

type Instance (Immutable : Positive) is null record;

A : Instance := (Immutable => 1);

begin
Ada.Integer_Text_IO.Put (A.Immutable);

-- A.Immutable := 2; -- assignment to discriminant not allowed:
end Immutable_Components;

关于ada - Ada 对象中的常量元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52251867/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com