要在Scala中映射的可选元组
如果我有一个元组列表,我可以使用要在Scala中映射的可选元组,scala,dictionary,tuples,optional,scala-collections,Scala,Dictionary,Tuples,Optional,Scala Collections,如果我有一个元组列表,我可以使用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
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).
valx=Some(3->3)
val y=无
列表(x,y).toMap
:15:错误:无法证明某些[(Int,Int)]您可以使用列表上的展平
删除无
s:
val x = Some(3 -> 3)
val y = None
List(x, y).flatten.toMap
> scala.collection.immutable.Map[Int,Int] = Map(3 -> 3)
您可以使用列表上的plant
删除None
s:
val x = Some(3 -> 3)
val y = None
List(x, y).flatten.toMap
> scala.collection.immutable.Map[Int,Int] = Map(3 -> 3)
您希望得到什么样的结果?我希望得到与以前相同的结果,转换x并忽略y,因为它是一个无:scala.collection.immutable.Map[Int,Int]=Map(3->3)您希望得到什么样的结果?我希望得到与以前相同的结果,转换x并忽略y,因为它是一个无:scala.collection.immutable.Map[Int,Int]=映射(3->3)注意,在这种情况下,存在从选项
到列表
的隐式转换。注意,在这种情况下,存在从选项
到列表
的隐式转换。