【发布时间】:2017-08-15 19:21:37
【问题描述】:
我想检索 Map 的默认值(如果存在)。这是我尝试过的:
def defaultValue[A, B](m: Map[A, B]): Option[B] = {
m match {
case m: Map.WithDefault[A, B] => Some(m.default(null))
case _ => None
}
}
这不起作用,因为null 不是A 的子类型。如何获取具有常量函数的Map.WithDefault的默认值?
我的尝试
产生A 类型的随机值?默认值是使用常量函数编码的,这就是它需要参数的原因,但在我的情况下,不应该使用参数。此外,当我输入Nothing 类型的??? 之类的内容时,它会在尝试返回常量值之前评估参数,从而引发异常。
我的问题与this question 有关,但它们没有提供直接检索默认值的方法。
【问题讨论】:
-
为什么要依赖具有默认值的地图?为什么不
map.get(key).getOrElse(myDefault)? -
我正在将 scala 的集合转换为其他类型的集合,这些集合也可以具有默认值(但没有函数)。这就是为什么我需要检索默认值。我不需要特定键的值。
-
没有默认值的地图。具有默认值的地图有一个默认函数,它可能是常数,也可能不是常数。这就是
default方法需要一个参数的原因。