Какой тип выражения это в скале? - PullRequest
1 голос
/ 05 ноября 2019

Учитывая, что x, p, r вычисляются из предыдущих выражений, что происходит внизу, <-, а затем после = </p>

val a = for{
 x <- y
 p = q (x)
 r <- s (p)
} yield (something(p.something, r.something))

1 Ответ

5 голосов
/ 05 ноября 2019

<- эквивалентен (синтаксический сахар) вызову .flatMap, в то время как = эквивалентен val x =yield вид окончательного .map).

Так чтокод эквивалентен:

val a = y.flatMap { x => // first <-
  val p = q (x)
  s(p).map { r => // 2nd <- + yield
    something(p.something, r.something)
  }
}
...