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

4.1.2 Сlices

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

Синтаксис

slice ::= prefix(discrete_range)

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

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

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

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

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

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

Примеры

Примеры слайсов:
Stars(1 .. 15) -- slice из 15 символов (см. 3.6.3)
Page(10 .. 10 + Size) -- slice из 1 + Size компонентов (см. 3.6)
Page(L)(A .. B) -- slice массива Page(L) (см. 3.6)
Stars(1 .. 0) -- нулевой slice (см. 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