Создание Ada записывает с одним полем

Я имею, определяют тип:

type Foo is record
   bar : Positive;
end record;

Я хочу создать функцию, которая возвращает экземпляр записи:

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

Но Ada не позволит мне, говоря, что "позиционный агрегат не может иметь одного аргумента".
Глупо попытка, я добавил другое немое поле к записи, и затем return (1, DOESNT_MATTER); работы!

Как я говорю Ada, что это не позиционный агрегат, а попытка создать запись?

6
задан ada hater 30 April 2010 в 08:02
поделиться

1 ответ

Позиционная инициализация агрегата не может использоваться с записью, имеющей только один компонент, но это не значит, что вы не можете иметь запись с одним компонентом.

Значения типа записи задаются путем предоставления списка именованных полей. Правильный код для функции get_foo должен вывестись следующим образом.

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

Можно также указать тип записи с помощью выражения Foo'(bar => 1).

Использование списка названных компонентов на практике лучше, чем позиционная инилизация. Вы можете забыть положение компонента, и оно не изменится, если вы добавите новое поле в свою запись.

7
ответ дан 17 December 2019 в 00:05
поделиться
Другие вопросы по тегам:

Похожие вопросы: