【发布时间】:2020-03-01 14:57:17
【问题描述】:
考虑到 x,p,r 是从前面的表达式中计算出来的,下面发生了什么,
val a = for{
x <- y
p = q (x)
r <- s (p)
} yield (something(p.something, r.something))
【问题讨论】:
标签: scala functional-programming for-comprehension
考虑到 x,p,r 是从前面的表达式中计算出来的,下面发生了什么,
val a = for{
x <- y
p = q (x)
r <- s (p)
} yield (something(p.something, r.something))
【问题讨论】:
标签: scala functional-programming for-comprehension
<- 等价于(语法糖).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)
}
}
【讨论】: