i = 0
sum = 0
while (i < 10) {sum += i
i += 1
}
for (i = 0; i < 10; i += 1) {
sum += i
}
Циклы и условия можно свободно вкладывать друг в друга.
- break — досрочный выход из цикла
- continue — переход к следующей итерации:
found = -1
for (i = 0; i < arr_len(items); i += 1) {
if (items[i] == target) {
found = i
break
}
}
for (;;) { ... } — бесконечный цикл (до лимита).
Защита от зацикливания: на один блок переменных — суммарно не более 256 итераций всех циклов. При достижении лимита циклы останавливаются, блок продолжает работать дальше. Досрочный break экономит этот лимит.


Как сохраняются переменные
- Внутри цикла значения обновляются мгновенно: условие цикла и каждая следующая строка видят актуальные данные.
- Сохраняются только финальные значения — один раз, после завершения цикла (в том числе через break). Независимо от количества итераций, запишется только итог.
- Если внутри цикла произошла ошибка, то изменения из цикла не сохраняются вовсе. Значения итераций временные, сохранённым останется то, что было до входа в цикл.
- Переменная цикла for (например, i) — служебная. Живёт только внутри цикла, никогда не сохраняется и исчезает после его завершения.
Локальные переменные
Ключевое слово local создаёт служебную переменную: она работает во всех расчётах до конца блока, но никогда не сохраняется в карточку клиента, поэтому не нужно потом чистить временные tmp и buf через del.
local tmp = get(#{data}, 'items')
local count = arr_len(tmp)
if (count > 5) {
result = 'много'
}
Если у клиента есть обычная переменная с тем же именем — она останется нетронутой: local просто временно её заслонит.
Операторы += и -=
- counter
+=1 - balance
-=price - greeting
+=', привет!'
Работают с числами и строками (для строк += — приклеивание), в любом месте блока.

Переносы строк и JSON без кавычек
Длинное выражение больше не обязано помещаться в одну строку — раньше перенос ломал блок, что являлось частой ошибкой при работе с калькулятором.
Теперь вызов функции можно переносить — просто разрывайте строку после запятой между аргументами:

Словари и массивы пишутся без обёртки в кавычки и на сколько угодно строк:
cfg = {
"greeting": "Здравствуйте!",
"work_hours": [10, 19]
}
hello = cfg["greeting"]

Единственное ограничение: внутри текста в кавычках ('...') разрывать строку нельзя. Переносите после запятой между аргументами или внутри {фигурных} и [квадратных] скобок — там можно разрывать где угодно.
Проверка ИИ
Любые строки калькулятора можно проверить с помощью ИИ, который подскажет все проблемы и ошибки при использовании методов, функций, операторов и циклов.




