Справочник операторов¶
Арифметика¶
| Оп | Смысл | Типы → результат | Пример |
|---|---|---|---|
+ |
Сложение или конкатенация | number+number→number, иначе текст через Values.add |
2 + 3 → 5; "n:" + 5 → "n: 5" |
- |
Вычитание | числа (toNumber при динамике) |
10 - 4 → 6 |
* |
Умножение | числа | 3 * 2.5 → 7.5 |
/ |
Деление | числа; деление на 0 — ошибка division by zero |
7 / 2 → 3.5 |
% |
Остаток | числа; mod 0 — division by zero in modulo |
7 % 3 → 1 |
<<<, >>> |
Явная конкатенация | всегда текст | "a" <<< "b" → "ab" |
2 + 3 * 4 → 14 (приоритет обычный). Смешанное ANY: a + b + "x"
остаётся текстом, потому что + с неизвестным операндом даёт kind ANY.
Сравнения (все возвращают boolean)¶
| Оп | Смысл | Замечание |
|---|---|---|
==, is |
Равенство (looseEquals) |
is — полный синоним, включая is null |
!= |
Неравенство | !looseEquals |
<, >, <=, >= |
Порядок | Числа — численно, остальное — как текст |
contains |
Вхождение | Список: есть ли элемент; мапа: есть ли ключ; текст: подстрока; null → false |
looseEquals: оба null → true; null vs значение → false;
два числа — по значению; есть строка — сравнение текстов.
if victim is null:
stop
if box contains "sword":
message "Armed!"
if #coins >= 60:
message "Rich."
Логика¶
and / &&, or / || — с коротким замыканием. !x / not x — отрицание
(операнд приводится через toBool).
if n > 0 and n < 10:
message "Single digit."
if vip or has-permission(me, "shop.vip"):
message "Welcome!"
Унарные и инкремент¶
-x (минус числа), ++x / --x / x++ / x-- (±1, префикс возвращает новое,
постфикс — старое). Работают с локалами, $, # и индексами.
Постфикс и вызовы¶
.prop — свойство (игрок) или size списка; [k] — индекс
(список/мапа/строка); f(a, b) — вызов своей функции или builtin'а.
Присваивания¶
= += -= *= /= %= — см. Операторы и выражения.