在Scala中映射的可选元组

ped*_*o91 0 dictionary scala tuples optional scala-collections

如果我有一个元组列表,我可以转换为一个地图toMap:

val x = (3 -> 3)
List(x).toMap
Run Code Online (Sandbox Code Playgroud)

我明白了

scala.collection.immutable.Map[Int,Int] = Map(3 -> 3)
Run Code Online (Sandbox Code Playgroud)

如果我有一个可选列表并尝试相同,我会收到一个错误:

val x = Some(3 -> 3)
val y = None
List(x, y).toMap

<console>:15: error: Cannot prove that Some[(Int, Int)] <:< (T, U).
Run Code Online (Sandbox Code Playgroud)

我想得到相同的结果.可能吗?

Jea*_*art 5

您可以使用flattenList删除NoneS:

val x = Some(3 -> 3)
val y = None
List(x, y).flatten.toMap

> scala.collection.immutable.Map[Int,Int] = Map(3 -> 3)
Run Code Online (Sandbox Code Playgroud)