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

Dav*_*ven 5 syntax attributes ada

所以我有一件事.

type Thing is new record
  ...elements...
end record;
Run Code Online (Sandbox Code Playgroud)

我有一个字符串化的功能.

function ToString(t: Thing) returns string;
Run Code Online (Sandbox Code Playgroud)

我希望能够告诉Ada使用此功能Thing'image,以便我的库的用户不必考虑他们是使用内置类型还是Thing.

但是,明显的语法:

for Thing'image use ToString;
Run Code Online (Sandbox Code Playgroud)

......不起作用.

有没有办法做到这一点?

Sim*_*ght 7

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

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

Pkg.Image (V);
Run Code Online (Sandbox Code Playgroud)

Pkg.Typ’Image (V);
Run Code Online (Sandbox Code Playgroud)

不是很大.

  • 太可惜了。这是一种令人恼火的不一致,否则它是一种令人钦佩的一致语言——用户定义的类型不应该是一个像样的编程语言中的二等构造。(另外,我的程序与 GNAT 绑定,因此能够执行“V'img”将非常有用。) (2认同)
  • 事实上,我最终做的是重载`&`,以便我可以无缝地将我的对象追加到字符串.因为我在向用户构建消息时主要想要这样做,这足以满足我的大部分目的.但这不是一个真正的解决方案. (2认同)