如何将某些类型的scala列表转换为字符串列表 例如:
List(Some(1234), Some(2345), Some(45678))
to List("1234","2345","45678")
答案 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))