在Ada中自定义'图像属性?

时间:2014-06-01 17:13:30

标签: syntax attributes ada

所以我有一件事。

type Thing is new record
  ...elements...
end record;

我有一个将其字符串化的函数。

function ToString(t: Thing) returns string;

我希望能够告诉Ada将此功能用于Thing'image,以便我的图书馆用户不必考虑他们是否使用内置类型或的事情。

然而,明显的语法:

for Thing'image use ToString;

......不起作用。

有办法做到这一点吗?

2 个答案:

答案 0 :(得分:6)

我不知道为什么这种语言不支持这一点,我不知道是否有人曾提出过它应该提出的正式提案(Ada问题或AI)。有点相关AI12-0020(Ada 2012的第20个人工智能)包含了这句话"我认为我们不会因为技术原因而拒绝它,而是重视“。

你可以看出为什么Ada报告人组可能会认为这相对不重要:你总是可以声明一个Image函数;

之间的区别
Pkg.Image (V);

Pkg.Typ’Image (V);

不是很大。

答案 1 :(得分:0)

一种常见的方法是创建一元+函数......

    function "+"(item : myType) return String;

语法上很轻。 明显的免责声明:应用于数字类型时可能会导致一些歧义(例如Put(+4);)

但是,预构建类型和用户定义类型之间仍然存在区别。 但是,除非您指定了强制执行此功能的界面(如果客户端呼叫' img),那么客户的代码将无法使用img。没有定义&#im;函数的私有类型?)。

如果您最终必须拥有一个界面,那么调用该函数并不重要。