【发布时间】:2015-09-19 10:25:51
【问题描述】:
我明白了
- 应避免在 Scala 中使用 null
- Map.get 将返回一个 Option[B],我可以使用 .getOrElse 来获取值并回退到默认值
例如
map.getOrElse("key1","default")
同时我正在与一个 Java 库进行交互,其中一些值为空。
例如 映射("key1"->null)
getOrElse 在这种情况下会抛出空指针。
我想处理这两种情况并写出这样的东西
def getOrElseNoNull[A,B](map:Map[A,B],key:A,default:B) = {
map.get(key) match{
case Some(x) if x != null => x
case _ => default
}
}
这很丑陋。 (它是 Map[Any],我需要来自该键的字符串)
getOrElseNoNull(map,"key1","").asInstanceOf[String])
是否可以使用隐式扩展地图,或任何其他优雅的方式?
【问题讨论】:
标签: scala