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

4.1.2 Срезы

Срез обозначает одномерный массив, образованный последовательностью смежных компонентов одномерного массива. Срез переменной является переменной; срез константы является константой; срез значения является значением.

Синтаксис

slice ::= префикс(дискретный_диапазон)

Правила разрешения имен

Префикс среза должен разрешаться в обозначение одномерного массива (после любого неявного разыменования).
Ожидаемый тип для дискретного диапазона среза — это тип индекса типа массива.

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

Срез обозначает одномерный массив, образованный последовательностью смежных компонентов массива, обозначаемого префиксом, соответствующей области значений индекса, задаваемой дискретным диапазоном.
Тип среза — это тип префикса. Его границы определяются дискретным диапазоном.

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

Для оценки срезов, префикс и discrete_range оцениваются в произвольном порядке. Если срез не является пустым срезом (срез, где discrete_range — пустой диапазон), то проверяется, принадлежат ли границы discrete_range диапазону индексов массива, обозначенного префиксом. Если проверка не пройдена, возбуждается исключение Constraint_Error.
ПРИМЕЧАНИЯ
2 Срез не допускается в качестве префикса атрибута доступа attribute_reference, даже если компоненты или весь массив связаны алиасами. См. 3.10.2.
3 Для одномерного массива A, срез A(N .. N) обозначает массив, имеющий только один компонент; его тип — тип A. С другой стороны, A(N) обозначает компонент массива A и имеет соответствующий тип компонента.

Примеры

Примеры срезов:
Stars(1 .. 15) -- срез из 15 символов (см. 3.6.3)
Page(10 .. 10 + Size) -- срез из 1 + Size компонентов (см. 3.6)
Page(L)(A .. B) -- срез массива Page(L) (см. 3.6)
Stars(1 .. 0) -- пустой срез (см. 3.6.3)
My_Schedule(Weekday) -- границы, задаваемые типом (см. 3.6.1 и 3.5.1)
Stars(5 .. 15)(K) -- то же, что Stars(K) (см. 3.6.3)
-- при условии, что K находится в 5 .. 15


Spec-Zone.ru

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