我在找 collect
scala 2.7 中的方法,但我似乎找不到适用的调用。是否有等同于 collect
的东西我可以在scala中使用吗?
明确地说,我希望从列表中过滤元素并将过滤后的元素映射到新类型。
最佳答案
您可以使用 flatMap
(2.7 中的完整方法签名是 def flatMap[B](f : (A) => Iterable[B]) : List[B]
)。它在 Iterable
上都声明和 Iterator
(签名略有不同):
scala> val l = List("1", "Hello", "2")
l: List[java.lang.String] = List(1, Hello, 2)
scala> val ints = l.flatMap { s => try { Some(s.toInt) } catch { case _ => None } }
ints: List[Int] = List(1, 2)
在上面的例子中,我利用了显式转换
option2iterable
在 Predef
.它在 TraversableLike
上的 2.8 中声明:def flatMap[B, That](f: A => Traversable[B])(implicit bf: CanBuildFrom[Repr, B, That]): That
关于list - 在 Scala 2.7 上收集方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1913467/