Если вы уже знакомы с каким-либо языком программирования, вы, скорее всего, знаете и операторы циклов, таки, как for, однако в Scala "for" имеет несколько иной смысл, нежели в других языках, давайте разберёмся в чём именно различие? For-comprehension - это синтаксический сахар языка, благодаря которому мы можем приводить сложные конструкции преобразования в приятный глазу облик, скажем так. Непонятно, согласен, посмотрим на примеры использования: возьмём два массива и переберём комбинации их содержимого. val a = Array(1,2,3,4,5)
val b = Array(1,2,3,4,5)
val ab = for {
a1 <- a
b1 <- b
} yield (a1, b1) Внутри ab мы получим массив с кортежами всех комбинаций из обоих массивов, выглядит довольно наглядно, не правда ли? Но что мы получим, если "десахаризируем" наш for-comprehension? val ab = a
.flatMap((a1:Int) =>
b
.map(b1 => (a1, b1))
) Уже знакомые нам функции map и flatMap, перебирающие массив и убирающие излишнюю вложенность. Функция делает то же самое, однако выгляди