Преимущества использования for loop с использованием yield в Scala:
- Создание новых коллекций на основе существующих. 5 Для каждой итерации цикла yield генерирует значение, которое запоминается. 4 Когда цикл завершается, он возвращает коллекцию всех сгенерированных значений. 4 Тип возвращаемой коллекции — тот же, что и у итерируемой (например, Map возвращает Map, List — List). 4
- Преобразование данных вместо побочных эффектов. 1 Такой подход соответствует парадигме функционального программирования и во многих случаях имеет преимущества. 1
- Возможность обрабатывать элементы из нескольких коллекций. 1 Для этого нужно добавить в цикл больше выражений генератора. 1
Кроме того, при использовании yield исходная коллекция не меняется, а конструкция for/yield создаёт новую коллекцию по заданному алгоритму. 4