【发布时间】:2021-02-05 15:23:21
【问题描述】:
考虑一个函数f : A -> Option[B]。
我想使用f 进行平面映射,但在结果中也保留原始值,作为一对值(A,B)。
我可以这样写:
collection.flatMap(a => {
f(a) match {
case Some(b) => Some((a,b))
case None => None
}
})
但是有更好的方法吗?
【问题讨论】:
标签: scala
考虑一个函数f : A -> Option[B]。
我想使用f 进行平面映射,但在结果中也保留原始值,作为一对值(A,B)。
我可以这样写:
collection.flatMap(a => {
f(a) match {
case Some(b) => Some((a,b))
case None => None
}
})
但是有更好的方法吗?
【问题讨论】:
标签: scala
这也有效。
for {
a <- collection
b <- f(a)
} yield (a,b)
【讨论】:
这个怎么样?
collection.flatMap(a => f(a).map(b => (a,b)))
【讨论】:
a => f(a).map((a,_))
a => f(a).map(a -> _)