3

在最近的一个问题中,我询问了该'操作,并了解到它用于获取某些类型的语言定义的“属性”。据我所知,没有办法为您的类型创建自己的属性。

我遇到了这行我不明白的代码:

function Image(C: Ada.Containers.Count_Type) return String renames
          Ada.Containers.Count_Type'Image;

这是在做什么?

4

1 回答 1

6

某些属性,例如 'Read、'Write、'Input 和 'Output,可以被用户定义的子程序覆盖,如下所示:

procedure My_Write
   (Stream : not null access Ada.Streams.Root_Stream_Type'Class;
    Item   : in  My_Type);
for My_Type'Write Use My_Write;

'图像属性不能被覆盖。您示例中的函数定义是属性的重命名,允许您像调用普通子程序一样调用该属性:

Image(My_Count);

代替

Ada.Containers.Count_Type'Image(My_Count);
于 2012-09-02T07:59:47.790 回答