请查看以下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,"")
无论元素是否存在,我总是需要取回一个元组。
感谢。
答案 0 :(得分:4)
您可以使用
而不是.withDefault(identity)
val v = Map("id" -> ("_id", "$oid")).withDefault(x => (x, ""))
withDefault
将一个函数作为参数,该函数将在需要时创建默认值。
这也会将返回类型从无用的Serializable
更改为更有用的(String, String)
。