в подобных случаях, используются квалифицированные
Кроме того, в подобных случаях, используются квалифицированные (указывающие имя типа) агрегаты:
Someone.all := Person'("Fred", 33); -- вариант с позиционным агрегатом
Someone.all := Person'( Name => "Fred"; -- вариант с именованным агрегатом Age => 33 );
|
Оба варианта, показанные в примере, выполняют абсолютно одинаковые действия, и их результат ничем не отличается от показанного ранее примера инициализации путем обращения к индивидуальным полям записи типа Person.
Однако, стоит обратить внимание на то, что использование агрегатов для инициализации всего объекта сразу - более удобно, а вариант с именованным агрегатом имеет лучшую читабельность (по сравнению с позиционным агрегатом), а это важно при работе со сложными структурами данных.
Ада позволяет одновременно создавать объект в динамической области памяти и выполнять его инициализацию требуемыми значениями.
Например, вместо выполненных ранее раздельно создания и инициализации, мы можем использовать следующее:
Someone := new Person'("Fred", 33); -- вариант с позиционным агрегатом
Someone := new Person'( Name => "Fred"; -- вариант с именованным агрегатом Age => 33 );
|
Чтобы облегчить понимание синтаксиса, который используется в языке Ада при работе со ссылочными типами, для тех кто знаком с такими языками программирования как Си и Паскаль, предлагается следующая сравнительная таблица:
Таблица сравнения синтаксиса указателей/ссылочных типов
в языках Паскаль, Си и Ада:
Паскаль
C
Ада
Доступ к полям указываемого объекта |
a^.fieldname |
*a.fieldname a->fieldname |
a.fieldname |
Копирование указателя |
b := a; |
b = a; |
b := a; |
Копирование указываемого обекта |
b^ := a^; |
*b = *a; |
b.all := a.all |
Содержание Назад Вперед
Forekc.ru
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий