Цикл "Для каждого" / Loop For Each
Группа действий: Базовые действия
Данное действие предназначено для выполнения заданной итерации по всем элементам коллекции. Для добавления в тело цикла последовательности действий необходимо переместить их на контур действия "Цикл "Для каждого".
Настройки
Свойство | Описание | Тип | Пример заполнения | Обязательность заполнения поля |
Параметры | ||||
Коллекция | Коллекция объектов, проход по которым будет осуществляться в цикле | Robin.Collection | Да | |
Результаты | ||||
Объект | Объект, в который будет помещен каждый элемент коллекции во время выполнения итерации | Robin.Object |
Особые условия использования
Отсутствуют.
Порядок работы с циклом «Для каждого»:
1.Выбрать действие «Для каждого» из группы действий «Базовые действия» и перенести в сценарий;
2. Заполнить тело цикла необходимыми действиями;
Пример заполнения:
3. Заполнить параметры действия
- Коллекция (список значений, которые будут обработаны в цикле)
Пример заполнения параметров:
4. Результат работы цикла: объект, в который будет помещен каждый элемент коллекции во время выполнения итерации.
Сравнение циклов «Для» и «Для каждого».
Цикл «Для» выполнит работу заданное количество раз. Итератор будет принимать значения от начального заданного значения до конечного с шагом, указанным в поле «Инкремент».
Цикл «Для каждого» последовательно работает с элементами выбранной коллекции. Количество итераций равно количеству элементов в коллекции, выбранной на входе.
Таким образом результат цикла «Для» это число, а «Для каждого» объект.
Пример использования
Задача:
Существует коллекция переменных с типом "Число", содержащие соответственно значение "(1988, 8, 2, 4)".
Необходимо завершить работу цикла, пока значение числовой переменной не будет равно значению "2".
Решение:
- Добавить цикл "Для каждого".
- Добавить действие "Равно".
- Добавить условие "Если". В ветвь "Истина" добавить сообщение в лог и прерывание цикла.
Реализация:
- Создаем переменную с типом "Коллекция". В коллекцию вносим значения (1988, 8, 2, 4) типа "Число"
- Перемещаем в рабочее пространство студии действие Цикл "Для каждого".
- Параметр "Коллекция". Указываем созданную коллекцию"Коллекция_значений". В ходе работы робота, цикл будет проходить по каждому из значений в коллекции.
- Параметр "Коллекция". Указываем созданную коллекцию"Коллекция_значений". В ходе работы робота, цикл будет проходить по каждому из значений в коллекции.
- Перемещаем в рабочее пространство студии действие "Равно", внутрь цикла "Для каждого".
- Параметр "Первый операнд". В данном параметре указываем объект текущей итерации цикла "Для каждого".
- Параметр "Второй операнд". В данном параметре указываем число "2". При нахождении числа 2 в цикле "Для каждого", цикл закончит свою работу.
- Перемещаем в рабочее пространство студии действие "Если", внутрь цикла "Для каждого".
- Параметр "Условие". В данном параметре указывается результат действия "Равно". Если результат действия "Равно" - true, то робот пойдет по ветке "Истина", если - false, то - по ветке "Ложь".
- В ветке "Истина" действия "Если" перемещаем действие "Сообщение в лог".
- В ветке "Истина" действия "Если" перемещаем действие "Прервать цикл"
- Параметр "Условие". В данном параметре указывается результат действия "Равно". Если результат действия "Равно" - true, то робот пойдет по ветке "Истина", если - false, то - по ветке "Ложь".
- Запускаем робота по кнопке "Запуск" в верхней панели. Итоговая схема робота будет выглядеть следующим образом:
Результат:
Робот отработал успешно. Алгоритм прошел по циклу и был прерван после того как в коллекции было найдено значение "2".
Кейс «Сортировка». Цикл «Для каждого».
Задача: В папке находятся файлы с расширением .xls(x) и .docx. Необходимо создать папки с названием расширения и распределить файлы по папкам.
Решение:
На рабочую область перенести действия «Получить содержимое папки» и «Для каждого».
Заполнить параметры действий.
Действие «Получить содержимое папки».
В строке «Папка» указать путь до папки с файлами, которые необходимо рассортировать.
В поле «Тип объектов» указать значение "только файлы".
Действие «Для каждого».
В строке «Коллекция» указать результат выполнения действия «Получить содержимое папки»
В тело цикла поместить следующие действия в указанном порядке:
- «Получить информацию о файле»;
- «Извлечь с позиции»;
- «Найти папку»;
- «Получить длину»;
- «Если»
- На ветвь «Истина» переместить действия:
- «Получить значение по индексу»;
- Конвертировать данные;
- «Переместить файл»;
- На ветвь «Ложь» переместить действия:
- «Создать новую папку»;
- «Переместить файл»;
- Заполнить параметры действий.
- Для действия «Получить информацию о файле»:
- Параметр «Файл» - ссылка на объект, обрабатываемый в момент итерации цикла.
- Параметр «Файл» - ссылка на объект, обрабатываемый в момент итерации цикла.
- Для действия «Извлечь с позиции»;
- Параметр «Исходный текст» - результат "Расширение" действия «Получить информацию о файле».
- Параметр «Позиция» - 1.
- Параметр «Длина» - если данный параметр не заполнен, то текст извлекается с заданной позицией до конца.
- Для действия «Найти папку».
- Параметр «Папка для поиска» - путь до папки, где храниться подпапка для сортировки файлов.
- Параметр «Шаблон поиска» - результат действия «Извлечь с позиции».
- Для действия «Получить длину».
- Параметр «Коллекция или массив» - результат действия «Найти папку».
- Параметр «Коллекция или массив» - результат действия «Найти папку».
- Для действия «Если».
- С помощью инструмента построения выражения в параметр условия записать логический оператор «Больше чем», где первый операнд – результат действия «Получить длину», а второй – 0.
- С помощью инструмента построения выражения в параметр условия записать логический оператор «Больше чем», где первый операнд – результат действия «Получить длину», а второй – 0.
- Для действия «Получить значение по индексу».
- Параметр «Коллекция» - результат действия «Найти папку».
- Параметр «Индекс» - 0.
- Для действия «Конвертировать данные».
- Параметр «Источник» - результат действия «Путь к папке».
- Параметр «Тип» - путь к папке.
- Для действия «Переместить файл».
- Параметр «Файл» - ссылка на объект, обрабатываемый в момент итерации цикла.
- Параметр «Папка назначения» - результат действия «Конвертировать данные».
- Для действия «Создать новую папку».
- Параметр «Родительская папка» - путь до папки, где , где храниться подпапка для сортировки файлов.
- Параметр «Имя» - результат действия «Извлечь с позиции».
- Для действия «Переместить файл».
- Параметр «Файл» - ссылка на объект, обрабатываемый в момент итерации цикла.
- Параметр «Папка назначения» - результат действия «Создать новую папку».
- Для действия «Получить информацию о файле»:
Результат:
Робот отработал успешно.
Алгоритм прошел по циклу, рассортировывая файлы по папкам.