Spec-Zone.ru › Ada 2012
Справочник по Ada 2012

4.5.3 Двоичные операторы сложения

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

Двоичные операторы сложения + (сложение) и – (вычитание) определены для каждого числового типа T со своим обычным значением. Они имеют следующие спецификации:
function "+"(Left, Right : T) return T
function "-"(Left, Right : T) return T
Операторы конкатенации & определены для каждого нелимитированного одномерного массива типа T с типом компонента C. Они имеют следующие спецификации:
function "&"(Left : T; Right : T) return T
function "&"(Left : T; Right : C) return T
function "&"(Left : C; Right : T) return T
function "&"(Left : C; Right : C) return T

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

При вычислении конкатенации с типом результата T, если оба операнда имеют тип T, результатом конкатенации является одномерный массив, длина которого равна сумме длин операндов, а компоненты содержат компоненты левого операнда, за которыми следуют компоненты правого операнда. Если левый операнд является нулевым массивом, результатом конкатенации является правый операнд. В противном случае нижняя граница результата определяется следующим образом:
  • Если конечный предок типа массива был определён с помощью constrained_array_definition, то нижняя граница результата соответствует нижней границе типа индекса;
  • Если конечный предок типа массива был определён с помощью unconstrained_array_definition, то нижняя граница результата соответствует нижней границе левого операнда.
Верхняя граница определяется нижней границей и длиной. Проверяется, принадлежит ли верхняя граница результата конкатенации диапазону типа индекса, если результат не является нулевым массивом. Если эта проверка не пройдена, генерируется Constraint_Error.
Если любой из операндов имеет тип компонента C, результат конкатенации определяется вышеуказанными правилами, используя вместо такого операнда массив, содержащий этот операнд как единственный компонент (преобразованный к типу компонента), и имеющий нижнюю границу типа индекса типа массива.
Результат конкатенации определяется в терминах присваивания анонимному объекту, как и для любого вызова функции (см. 6.5).
ПРИМЕЧАНИЯ
15 Как и для всех предопределенных операторов над модульными типами, двоичные операторы сложения + и – над модульными типами включают в себя конечное приведение по модулю модуля, если результат находится вне базового диапазона типа.

Примеры

Примеры выражений, использующих двоичные операторы сложения:
Z + 0.1 -- Z должен быть типа вещественного числа
"A" & "BCD" -- конкатенация двух строковых литералов
'A' & "BCD" -- конкатенация символьного литерала и строкового литерала
'A' & 'A' -- конкатенация двух символьных литералов


Spec-Zone.ru

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