gpt4 book ai didi

ada - 相当于 Ada 中的访问器

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

有没有办法在 Ada 中创建与 C# get/set 等效的方法?

我有这样的类型(在 Ada 中):

-- Ada :
type MyType is record
Value : Integer;
end record;

我想像这样拆分值
-- Ada :
type MyType is record
ten : Integer;
unit : Integer;
end record;

但我想保留 MyType.Value (在许多只读文件中引用)。我想创建一个访问器,但我没有在 Ada 中找到如何做。我知道如何在 C# 中做:
// C# :
int Value
{
get
{
return this.ten * 10 + this.unit;
}
set
{
this.unit = value % 10;
this.ten = value / 10;
}
}

我想做的事 :
-- ada :
MyType var := MyType'(Value => 15); -- unmodified code
var.Value := 65; -- can be modified like before

Integer ten := var.ten; -- new getter

最佳答案

这是私有(private)类型的工作。

package Hidden is
type T is tagged private;

function New_T (Value : Integer) return T;

function Value (Tee : T) return Integer;
function Ten (Tee : T) return Integer;
function Unit (Tee : T) return Integer;
private -- Hidden
type T is tagged record
Ten : Integer;
Unit : Integer;
end record;
...
end Hidden;

现在你可以写像
V : T := New_T (42);
...
Put_Line (Item => V.Value'Image & V.Ten'Image & V.Unit'Image);
V := New_T (23);

关于ada - 相当于 Ada 中的访问器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59245902/

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