说我有一个函数,该函数检查某些操作是否适用于A的实例,如果适用,则返回B或None的实例:
def checker[A,B]( a: A ) : Option[B] = ...
现在,我要形成一个新集合,其中包含B的所有有效实例,并删除None值。以下代码似乎可以完成任务,但是肯定有更好的方法:
val as = List[A]( a1, a2, a3, ... )
val bs =
as
.map( (a) => checker(a) ) // List[A] => List[Option[B]]
.filter( _.isDefined ) // List[Option[B]] => List[Option[B]]
.map( _.get ) // List[Option[B]] => List[B]
谢谢!
最佳答案
应该这样做:
val bs = as.flatMap(checker)
关于scala - Scala:过滤选项集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7579910/