【发布时间】:2011-04-04 01:59:07
【问题描述】:
是否有转换 Seq[Option[T]] -> Seq[T] 的 Scala API 方法?
您可以通过以下方式手动执行此操作:
seq.filter(_.isDefined).map(_.get)
想知道通用API中是否有实现上述功能的方法。
【问题讨论】:
-
filter+map可以简化为以偏函数为参数的collect。
是否有转换 Seq[Option[T]] -> Seq[T] 的 Scala API 方法?
您可以通过以下方式手动执行此操作:
seq.filter(_.isDefined).map(_.get)
想知道通用API中是否有实现上述功能的方法。
【问题讨论】:
filter + map 可以简化为以偏函数为参数的collect。
绝对,绝对不是。 (不是!)
scala> val so1 = List(Some(1), None, Some(2), None, Some(3))
so1: List[Option[Int]] = List(Some(1), None, Some(2), None, Some(3))
scala> so1.flatten
res0: List[Int] = List(1, 2, 3)
【讨论】:
flatMap(fun) == map(fun).flatten。