有没有办法在 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/