从Scala集合中提取Option的最简单方法

时间:2015-10-14 11:26:42

标签: scala collections optional

假设您有一个$decode = json_decode($jsonfile, TRUE); ,并希望Map[Option[Int], String]放弃包含Map[Int, String]作为密钥的条目。

另一个例子,应该是某种类似的None并将其转换为List[(Option[Int], String)],再次丢弃包含List[(Int, String)]作为第一个元素的元组。

最好的方法是什么?

1 个答案:

答案 0 :(得分:7)

collect是你的朋友:

示例数据定义

val data = Map(Some(1) -> "data", None -> "")

Map

的解决方案
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))