scala将List(Some())转换为List(字符串)

时间:2018-04-17 16:57:43

标签: scala scala-collections

如何将某些类型的scala列表转换为字符串列表 例如:

List(Some(1234), Some(2345), Some(45678))
to  List("1234","2345","45678")

5 个答案:

答案 0 :(得分:3)

你可以这样做:

scala> List(Some(1234), Some(2345), Some(45678)).flatten.map(x => x.toString)

res11: List[String] = List(1234, 2345, 45678)

答案 1 :(得分:2)

正如已经建议的那样,您可以flatten集合,然后map toString方法覆盖其项目,但是您可以使用{{1}在一次传递中获得相同的结果}}:

collect

val in = List(Some(1234), Some(2345), Some(45678)) val out = in.collect { case Some(x) => x.toString } 方法采用部分函数(使用collect定义来解构case)并仅将其应用于定义了部分函数的项目(在这种情况下) ,只有Option而不是Some s。。

您可以详细了解None on the official documentation

您可以运行示例并使用它here on Scastie

答案 2 :(得分:2)

val str: List[String]= List(Some(123), 
Some(456), Some(789), None,
Some(234)).flatten.map(_.toString)
println(str) // will print List(123,456,789,234) 

实际上,flatten将忽略所有None并将一些我们映射到字符串的内容。

答案 3 :(得分:1)

List(Some(1234), Some(2345), Some(45678)).flatten.map(_.toString)

答案 4 :(得分:1)

地图和匹配:

li.map {case Some (x) => Some (s"$x")}
res103: List[Some[String]] = List(Some(1234), Some(2345), Some(45678))