Арифметические операторы (+, -, *, ...)
Арифметические операторы создают свойства, значением которых является результат арифметической операции. Аргументами этих операторов должны являются свойства, значения которых являются экземплярами числовых классов. В платформе на данный момент поддерживаются следующие арифметические операторы:
Оператор | Название | Описание | Пример | Результат |
---|---|---|---|---|
+ | Сумма | Принимает два операнда на вход и возвращает их сумму | 3 + 5 | 8 |
- | Разность | Принимает два операнда на вход и возвращает их разность Также у этого оператора есть унарная форма, в этом случае первый операнд считается равным 0 | 5 - 3 | 2 |
* | Произведение | Принимает два операнда на вход и возвращает их произведение | 3 * 5 | 15 |
/ | Отношение | Принимает два операнда на вход и возвращает их отношение | 15 / 3 | 5 |
Все эти операторы возвращают NULL
, если один из операндов NULL
. Для операторов суммы и разности также есть возможность использовать специальную форму со скобками, в этом случае NULL
будет эквивалентен 0
. Причем для этих операторов будет верно и обратное - если результат оператора в такой форме равен 0
, то возвращается NULL
(к примеру 5 (-) 5 = NULL
):
Оператор | Название | Описание | Пример | Результат |
---|---|---|---|---|
(+) | Сумма | Принимает два операнда на вход, возвращает их сумму, трактует NULL как 0 | 3 (+) 5 3 (+) NULL | 8 3 |
(-) | Разность | Принимает два операнда на вход, возвращает их разность, трактует NULL как 0 | 5 (-) 3 5 (-) NULL 5 (-) 5 | 2 5 NULL |
Определение класса результата
Класс результата определяется как:
Оператор | Результат |
---|---|
+ , - | Общий предок (семейство - Числа) |
* | NUMERIC[p1.IntegerPart + p1.Precision + p2.IntegerPart + p2.Precision, p1.Precision + p2.Precision] |
/ | NUMERIC[p1.IntegerPart + p1.Precision + p2.IntegerPart + p2.Precision, p1.Precision + p2.IntegerPart] |
Язык
Описание арифметических операторов.
Примеры
sum(a, b) = a + b;
transform(a, b, c) = -a * (b (+) c);