Spec-Zone.ru › Ada 2022
Руководство по Ada (Ada 2022)

3.6.2 Операции типов массивов

Правила легальности

Аргумент N, используемый в attribute_designator для N-го измерения массива, должен быть статической выражением некоторого целочисленного типа. Значение N должно быть положительным (ненулевым) и не должно превышать размерности массива.

Статическая семантика

Следующие атрибуты определены для префикса prefix A, который является типом массива (после любого неявного разыменования) или обозначает ограниченный подтип массива:
A'First
A'First обозначает нижнюю границу первого диапазона индексов; его тип — соответствующий тип индексов.
A'First(N)
A'First(N) обозначает нижнюю границу N-го диапазона индексов; его тип — соответствующий тип индексов.
A'Last
A'Last обозначает верхнюю границу первого диапазона индексов; его тип — соответствующий тип индексов.
A'Last(N)
A'Last(N) обозначает верхнюю границу N-го диапазона индексов; его тип — соответствующий тип индексов.
A'Range
A'Range эквивалентен диапазону A'First .. A'Last, за исключением того, что префикс prefix A вычисляется только один раз.
A'Range(N)
A'Range(N) эквивалентен диапазону A'First(N) .. A'Last(N), за исключением того, что префикс prefix A вычисляется только один раз.
A'Length
A'Length обозначает количество значений первого диапазона индексов (ноль для пустого диапазона); его тип — universal_integer.
A'Length(N)
A'Length(N) обозначает количество значений N-го диапазона индексов (ноль для пустого диапазона); его тип — universal_integer.

Рекомендации по реализации

Реализация должна обычно представлять многомерные массивы в порядке следования строк, соответствующем обозначениям, используемым для многомерных массивов-агрегатов (см. 4.3.3). Однако, если для типа многомерного массива указана конвенция Fortran, вместо этого следует использовать порядок следования столбцов (см. B.5, «Взаимодействие с Fortran»).
ПРИМЕЧАНИЕ 1 Атрибуты A'First и A'First(1) обозначают одно и то же значение. Аналогичное отношение существует для атрибутов A'Last, A'Range и A'Length. Следующее соотношение выполняется (за исключением нулевого массива) для вышеперечисленных атрибутов, если тип индексов — целочисленный тип:
A'Length(N) = A'Last(N) - A'First(N) + 1
ПРИМЕЧАНИЕ 2 Тип массива ограничен, если тип его компонентов ограничен (см. 7.5).
ПРИМЕЧАНИЕ 3 Предварительно определенные операции типа массива включают тесты на принадлежность, квалификацию и явное преобразование. Если тип массива не ограничен, они также включают присваивание и предварительно определенные операторы равенства. Для одномерного типа массива они включают предварительно определенные операторы конкатенации (если не ограничен) и, если тип компонента дискретный, предварительно определенные реляционные операторы; если тип компонента — boolean, также включены предварительно определенные логические операторы.
ПРИМЕЧАНИЕ 4 Компонент массива может быть назван с помощью indexed_component. Значение типа массива может быть указано с помощью array_aggregate. Для одномерного типа массива может быть назван срез массива; также определены строковые литералы, если тип компонента — тип символов.

Примеры

Примеры (использующие массивы, объявленные в примерах 3.6.1):
-- Filter'First = 0 Filter'Last = 31 Filter'Length = 32
-- Rectangle'Last(1) = 20 Rectangle'Last(2) = 30


Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API