scala 将 List(Some()) 转换为 List(string)
scala convert List(Some()) to List(string)
如何将某些类型的 Scala 列表转换为字符串列表
例如:
List(Some(1234), Some(2345), Some(45678))
to List("1234","2345","45678")
List(Some(1234), Some(2345), Some(45678)).flatten.map(_.toString)
你可以这样做:
scala> List(Some(1234), Some(2345), Some(45678)).flatten.map(x => x.toString)
res11: List[String] = List(1234, 2345, 45678)
映射和匹配:
li.map {case Some (x) => Some (s"$x")}
res103: List[Some[String]] = List(Some(1234), Some(2345), Some(45678))
正如已经建议的那样,您可以 flatten
集合,然后 map
toString
方法对其项目进行处理,但是您可以通过使用 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
s).
您可以阅读更多关于 collect
on the official documentation。
您可以 运行 一个示例并使用它 here on Scastie。
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)
实际上展平将忽略所有 None 并取一些我们正在映射到字符串的内容。
如何将某些类型的 Scala 列表转换为字符串列表 例如:
List(Some(1234), Some(2345), Some(45678))
to List("1234","2345","45678")
List(Some(1234), Some(2345), Some(45678)).flatten.map(_.toString)
你可以这样做:
scala> List(Some(1234), Some(2345), Some(45678)).flatten.map(x => x.toString)
res11: List[String] = List(1234, 2345, 45678)
映射和匹配:
li.map {case Some (x) => Some (s"$x")}
res103: List[Some[String]] = List(Some(1234), Some(2345), Some(45678))
正如已经建议的那样,您可以 flatten
集合,然后 map
toString
方法对其项目进行处理,但是您可以通过使用 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
s).
您可以阅读更多关于 collect
on the official documentation。
您可以 运行 一个示例并使用它 here on Scastie。
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)
实际上展平将忽略所有 None 并取一些我们正在映射到字符串的内容。