如何以优雅的scala样式从地图中检索元素? 试试看起来并不合适。 支票是否包含最佳选项?
尝试模式匹配不会捕获异常。
case class SomeClass(first: Int, second:String)
val someClass = SomeClass(1, "foo")
val myMap = Map("firstKey" -> Map("secondKey" -> someClass))
myMap(("col1"))("XXX") match {
case s:String => s.first
case _ => 0
}
答案 0 :(得分:2)
我不知道您是否发现默认设置更优雅,但它们比捕获例外要好。
val myMap = Map("firstKey" ->
Map("secondKey" -> "someValue").withDefaultValue(""))
.withDefaultValue(Map().withDefaultValue(""))
myMap("firstKey")("secondKey").length // res0: Int = 9
myMap("firstKey")("secondK").length // res1: Int = 0
myMap("firstK")("secondKey").length // res2: Int = 0
答案 1 :(得分:2)
你可以用它来理解它
val length = for(col1 <- myMap.get("col1");
str <- col1.get("XXX")) yield str.first
val res = length.getOrElse(0)