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属性はオーバーライドできません。この例の関数定義は、属性の名前を変更することで、通常のサブプログラムであるかのように属性を呼び出すことができます。

Image(My_Count);

それ以外の

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