Spec-Zone.ru › Ada 95
Справочное руководство по Ada 95

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

Правила допустимости

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

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

Для префикса 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, за исключением того, что префикс A оценивается только один раз.
A'Range(N)
A'Range(N) эквивалентен диапазону A'First(N) .. A'Last(N), за исключением того, что префикс A оценивается только один раз.
A'Length
A'Length обозначает количество значений первого диапазона индексов (ноль для пустого диапазона); его тип — universal_integer.
A'Length(N)
A'Length(N) обозначает количество значений N-го диапазона индексов (ноль для пустого диапазона); его тип — universal_integer.

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

Реализация должна, как правило, представлять многомерные массивы в порядке следования строк, что соответствует обозначениям, используемым для агрегатов многомерных массивов (см. 4.3.3). Однако, если для типа многомерного массива применяется pragma Convention(Fortran, ...), то следует использовать порядок следования столбцов (см. B.5, «Интерфейс с Fortran»).
ПРИМЕЧАНИЯ
45 attribute_references A'First и A'First(1) обозначают одно и то же значение. Аналогичное соотношение существует для attribute_references A'Last, A'Range и A'Length. Следующее соотношение выполняется (кроме нулевого массива) для вышеперечисленных атрибутов, если тип индекса является целочисленным типом:
A'Length(N) = A'Last(N) - A'First(N) + 1
46 Тип массива является ограниченным, если его тип компонента ограничен (см. 7.5).
47 Предопределенные операции типа массива включают проверки на принадлежность, квалификацию и явное преобразование. Если тип массива не ограничен, они также включают присваивание и предопределенные операторы равенства. Для одномерного типа массива они включают предопределенные операторы конкатенации (если не ограничен) и, если тип компонента является дискретным, предопределенные реляционные операторы; если тип компонента является булевым, также включаются предопределенные логические операторы.
48 Компоненту массива можно дать имя с помощью 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