Scala:元组映射的默认值

时间:2014-08-18 21:46:26

标签: scala

请查看以下Map

scala> val v = Map("id" -> ("_id", "$oid")).withDefault(identity)
v: scala.collection.immutable.Map[String,java.io.Serializable] = Map(id -> (_id,$oid))

编译器生成Map[String,java.io.Serializable],可以像这样检索id的值:

scala> v("id")
res37: java.io.Serializable = (_id,$oid)

现在,如果我尝试访问一个不存在的元素......

scala> v("idx")
res45: java.io.Serializable = idx

...然后如预期的那样我自己回来了关键......但是如何用键本身和一个像这样的空字符串来取回一个元组呢?

scala> v("idx")
resXX: java.io.Serializable = (idx,"")

无论元素是否存在,我总是需要取回一个元组。

感谢。

1 个答案:

答案 0 :(得分:4)

您可以使用

而不是.withDefault(identity)
val v = Map("id" -> ("_id", "$oid")).withDefault(x => (x, ""))

withDefault将一个函数作为参数,该函数将在需要时创建默认值。

这也会将返回类型从无用的Serializable更改为更有用的(String, String)