scala - Scala:过滤选项集合

标签 scala map filter option

说我有一个函数,该函数检查某些操作是否适用于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/

相关文章:

PHP过滤mysql结果

scala - 如何保存和重用Scala实用程序代码

scala - Spark : write Paquet from heterogeneous data

java - 如何使用 ASM 来欺骗 HelloWorld.scala?已加载到 JVM 但未找到?

c++ - 映射运算符 [] 和 bool 作为值

c++ - 调用 std::map::clear 的段错误

map - 功能图

c - 使用 grep/sort 删除一行中的多个换行符

swift - 在 Realm 中按日期组件过滤

scala - 如何将Java库包含到scala项目中