Ресиверы RE/BR/CO
(повторить – прервать – продолжить)
ERA дала возможность, помимо всего прочего, использовать для написания ERM-скриптов скоростные циклы высокого уровня через новые ресиверы: !!re, !!br, !!co.
!!re $1[/#2/#3/#4]:;
…
!!en:;
Повторяет блок кода. Только первый аргумент ($1) обязателен.
$1 – переменная счётчика цикла (любая числовая локальная или глобальная переменная) #2 – начальное значение счётчика (опционально). По умолчанию: значение переменной-счётчика цикла. #3 – конечное значение счётчика (опционально). По умолчанию: начальное значение счётчика цикла. #4 – шаг цикла (опционально). По умолчанию: 1, если установлено значение для #3, в противном случае будет равно 0.Пример: Комментарии (показать)
Логика работы ресивера такова:
Циклы для большинства задач имеют тип WHILE DO, то есть с возможностью нуля итераций. Но тем не менее, !!re позволяет писать любые: от FOR i FROM x TO y BY step, до LOOP и DO WHILE.
Пример:
Для ресиверов контроля циклов !!br / !!co существует поддержка уровней циклов.
!!br 1:; равнозначно !!br:; и означает прервать текущий (наиболее вложенный) цикл.
!!br 2:; прервёт цикл на уровень выше, а !!br 3:; – ещё выше по уровню, и т.д. …
Пример: