从 Scala 集合中提取 Option 的最简单方法
Simplest way to extract Option from Scala collections
假设您有一个 Map[Option[Int], String]
并且您想要一个 Map[Int, String]
丢弃包含 None
作为键的条目。
另一个应该有点相似的例子是 List[(Option[Int], String)]
并将其转换为 List[(Int, String)]
,再次丢弃包含 None
作为第一个元素的元组。
最好的方法是什么?
collect
是你的朋友:
示例数据定义
val data = Map(Some(1) -> "data", None -> "")
地图解决方案
scala> data collect { case ( Some(i), s) => (i,s) }
res4: scala.collection.immutable.Map[Int,String] = Map(1 -> data)
同样的方法适用于元组列表
scala> data.toList collect { case ( Some(i), s) => (i,s) }
res5: List[(Int, String)] = List((1,data))
假设您有一个 Map[Option[Int], String]
并且您想要一个 Map[Int, String]
丢弃包含 None
作为键的条目。
另一个应该有点相似的例子是 List[(Option[Int], String)]
并将其转换为 List[(Int, String)]
,再次丢弃包含 None
作为第一个元素的元组。
最好的方法是什么?
collect
是你的朋友:
示例数据定义
val data = Map(Some(1) -> "data", None -> "")
地图解决方案
scala> data collect { case ( Some(i), s) => (i,s) }
res4: scala.collection.immutable.Map[Int,String] = Map(1 -> data)
同样的方法适用于元组列表
scala> data.toList collect { case ( Some(i), s) => (i,s) }
res5: List[(Int, String)] = List((1,data))