【问题标题】:Optional tuples to Map in Scala在 Scala 中映射的可选元组
【发布时间】:2016-04-12 12:05:21
【问题描述】:

如果我有一个元组列表,我可以使用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).

我想得到同样的结果。有可能吗?

【问题讨论】:

  • 您希望得到什么样的结果?
  • 我希望得到与以前相同的结果,转换 x 并忽略 y,因为它是 None:scala.collection.immutable.Map[Int,Int] = Map(3 -> 3)

标签: scala dictionary tuples optional scala-collections


【解决方案1】:

您可以在List 上使用flatten 删除Nones:

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

> scala.collection.immutable.Map[Int,Int] = Map(3 -> 3)

【讨论】:

  • 请注意,在这种情况下,存在从 OptionList 的隐式转换。
猜你喜欢
  • 2016-02-10
  • 1970-01-01
  • 2013-01-13
  • 2017-09-11
  • 2018-11-15
  • 2017-08-24
  • 2018-12-19
  • 1970-01-01
  • 2015-04-30
相关资源
最近更新 更多