如果我有像List[Option[A]]
这样的东西,并且我想把它转换成List[A]
,标准的方法是使用flatMap
scala> val l = List(Some("Hello"), None, Some("World"))
l: List[Option[java.lang.String]] = List(Some(Hello), None, Some(World))
scala> l.flatMap( o => o)
res0: List[java.lang.String] = List(Hello, World)
现在o => o
只是一个身份函数。我本以为会有办法这样做的:
l.flatMap(Identity) //return a List[String]
然而,我不能让它工作,因为你不能泛化一个object
。我尝试了一些方法,但都无济于事;有人用过这样的东西吗?
发布于 2009-11-26 05:03:54
你可以给类型推断器一点帮助:
scala> val l = List(Some("Hello"), None, Some("World"))
l: List[Option[java.lang.String]] = List(Some(Hello), None, Some(World))
scala> l.flatten[String]
res0: List[String] = List(Hello, World)
https://stackoverflow.com/questions/1797502
复制相似问题