在 Scala 中映射的可选元组
Optional tuples to Map in Scala
如果我有元组列表,我可以使用 toMap
:
转换为地图
val x = (3 -> 3)
List(x).toMap
然后我得到
scala.collection.immutable.Map[Int,Int] = Map(3 -> 3)
如果我有一个可选列表并尝试相同的操作,我会得到一个错误:
val x = Some(3 -> 3)
val y = None
List(x, y).toMap
<console>:15: error: Cannot prove that Some[(Int, Int)] <:< (T, U).
我想要得到相同的结果。可能吗?
您可以在 List
上使用 flatten
删除 None
s:
val x = Some(3 -> 3)
val y = None
List(x, y).flatten.toMap
> scala.collection.immutable.Map[Int,Int] = Map(3 -> 3)
如果我有元组列表,我可以使用 toMap
:
val x = (3 -> 3)
List(x).toMap
然后我得到
scala.collection.immutable.Map[Int,Int] = Map(3 -> 3)
如果我有一个可选列表并尝试相同的操作,我会得到一个错误:
val x = Some(3 -> 3)
val y = None
List(x, y).toMap
<console>:15: error: Cannot prove that Some[(Int, Int)] <:< (T, U).
我想要得到相同的结果。可能吗?
您可以在 List
上使用 flatten
删除 None
s:
val x = Some(3 -> 3)
val y = None
List(x, y).flatten.toMap
> scala.collection.immutable.Map[Int,Int] = Map(3 -> 3)