6

タイプを定義しました:

type Foo is record
   bar : Positive;
end record;

レコードのインスタンスを返す関数を作成したい:

function get_foo return Foo is
    return (1);
end get_foo;

しかし、Ada は「位置集合体は引数を 1 つ持つことはできない」と言って、私を許しません。
ばかげて試してみて、レコードに別のダムフィールドを追加したところ、return (1, DOESNT_MATTER);機能しました!

位置集計ではなく、レコードを作成しようとしていることを Ada に伝えるにはどうすればよいですか?

4

1 に答える 1

7

位置集計の初期化は、コンポーネントが1つしかないレコードでは使用できませんが、コンポーネントが1つしかないレコードを使用できないわけではありません。

レコードタイプの値は、名前付きフィールドのリストを指定することによって指定されます。関数の正しいコードはget_foo次のようになります。

function get_foo return Foo is
    return (bar => 1);
end get_foo;

式を使用してレコードのタイプを指定することもできますFoo'(bar => 1)

名前付きコンポーネントのリストを使用することは、実際には位置の初期化よりも優れています。コンポーネントの位置を忘れることができ、レコードに新しいフィールドを追加しても変更されません。

于 2010-04-30T09:11:37.773 に答える