相当于Ada中的访问者

问题描述 投票:4回答:2

是否可以在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

有没有一种方法可以在Ada中创建等效于C#get / set的方法?我有一个这样的类型(在Ada中):-Ada:类型MyType是记录值:整数;结束记录;我想像这样分割值...

ada accessor
2个回答
4
投票

[正如我在对上一个问题的my answer评论中所说,没有语言构造可以为您解决。根据您的用例,您可以使用受控类型:


7
投票

这是私人类型的工作。

© www.soinside.com 2019 - 2024. All rights reserved.