如何将Map [K,Option [V]]转换为Map [K,V],在Scala中丢弃Nones?

Dun*_*gor 1 scala scala-collections

可能重复:
将Map [K,Option [V]]转换为Map [K,V]的更好方法

Map[Symbol, Option[String]]从一个网页上读取值,其中一些可能会丢失.

我想"扁平化"这个Map[Symbol, String]去除所有的None价值观.

到目前为止我能做的最好的是

def removeNones[K, V](map: Map[K, Option[V]]): Map[K, V] = 
    map.collect { case kv if kv._2.isDefined => (kv._1, kv._2.get) }
Run Code Online (Sandbox Code Playgroud)

但我真的不喜欢case,不得不重建Pair.

谁能找到更好的表达方式?

Lui*_*hys 9

val m = Map('a -> Some("a string"), 'b -> None)

m collect {case(a, Some(b)) => (a, b)}
  // Map('a -> a string)
Run Code Online (Sandbox Code Playgroud)

似乎可以做到这一点.