Break
Break — полностью завершает выполнение ближайшего цикла For и продолжает выполнение реакций после цикла.
📝 Назначение
Используется внутри цикла For для досрочного выхода из цикла. Все оставшиеся итерации пропускаются, выполнение продолжается с реакции, следующей за циклом.
Когда это нужно:
- Найден нужный элемент — дальше искать не нужно
- Достигнуто максимальное количество успешных операций
- Возникла ошибка, при которой продолжение цикла невозможно
💡 Совет:
Breakобычно ставится под условием (через требования реакции), иначе цикл завершится после первой итерации.
⚙️ Параметры
У реакции нет параметров. Она всегда действует на ближайший окружающий цикл For.
🧪 Примеры использования
Пример 1: Поиск элемента в списке
Задача: Найти пользователя с ID 12345 и остановить поиск.
Реакции:
For→Список:${var.local.users}
-
Внутри:
TriggerFolderс условием:${loop.item.id} == 12345 -
Внутри:
SetVarLocal→found_user = ${loop.item} -
Внутри:
Break -
Внутри (после условия): (пропустить, если не нашли)
SendMessage→ текст:Пользователь найден: ${var.local.found_user.name}
Пример 2: Ограничение количества обработанных элементов
Задача: Обработать не более 3 элементов из списка.
Реакции:
For→Список:${var.local.items}
-
Внутри:
SendMessage→ текст:Обработка: ${loop.item} -
Внутри:
TriggerFolderс условием:${loop.i + 1} >= 3 -
Внутри:
Break
SendMessage→ текст:Обработка завершена (максимум 3 элемента)
Пример 3: Выход из цикла при ошибке
Задача: Отправлять сообщения пользователям, но прекратить при первой ошибке.
Реакции:
For→Список:${var.local.user_ids}
-
Внутри:
SendMessage→chat_id:${loop.item}, текст:Уведомление -
Внутри:
TriggerFolderс условием: проверка ошибки отправки -
Внутри:
Break
SendMessage→ текст:Рассылка прервана из-за ошибки
Пример 4: Break во вложенном цикле
Задача: Выйти только из внутреннего цикла, продолжить внешний.
Реакции:
For→Итерации:3(внешний)
-
Внутри:
For→Итерации:5(внутренний) -
Внутри:
TriggerFolderс условием:${loop.j} >= 2 -
Внутри:
Break(выход из внутреннего цикла) -
Внутри:
SendMessage→ текст:Внутренний цикл: ${loop.j} -
Внутри (после внутреннего цикла):
SendMessage→ текст:Внешний цикл: ${loop.i}
Результат:
- Внешний цикл выполняет все 3 итерации
- Внутренний цикл на каждой итерации внешнего выполняет только 2 итерации (j = 0, 1)
Пример 5: Break по достижению цели
Задача: Найти первое положительное число в списке.
Реакции:
SetVarLocal→numbers:[-5, -2, 0, 3, 8, -1]SetVarLocal→first_positive:nullFor→Список:${var.local.numbers}
-
Внутри:
TriggerFolderс условием:${loop.item} > 0 -
Внутри:
SetVarLocal→first_positive = ${loop.item} -
Внутри:
Break
TriggerFolderс условием:${var.local.first_positive} != null
- Внутри:
SendMessage→ текст:Первое положительное число: ${var.local.first_positive} - Иначе:
SendMessage→ текст:Положительных чисел не найдено
🔄 Особенности поведения
| Ситуация | Поведение |
|---|---|
| Break вне цикла For | Реакция не имеет эффекта (ошибки нет) |
| Break без условия | Цикл завершается после первой итерации |
| Break во вложенном цикле | Завершает только внутренний цикл, внешний продолжается |
| Break после Continue | Недостижим (Continue переходит к следующей итерации) |
| Несколько Break в одном цикле | Сработает первый достигнутый |
🔗 Связанные реакции
| Реакция | Назначение |
|---|---|
| For | Организация цикла |
| Continue | Переход к следующей итерации |
| Exit | Остановка выполнения триггера |