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