phi*_*eas 1 functional-programming scala for-comprehension
考虑到x,p,r是从前面的表达式求出的,则在<-之后=之后发生的情况
val a = for{
x <- y
p = q (x)
r <- s (p)
} yield (something(p.something, r.something))
Run Code Online (Sandbox Code Playgroud)
该<-等效(语法糖)来.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)
}
}
Run Code Online (Sandbox Code Playgroud)