![](/img/trans.png)
[英]spark scala throws java.util.NoSuchElementException: key not found: 0 exception
[英]scala map java.util.NoSuchElementException: key not found elegant
如何以優雅的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
}
我不知道您是否發現默認值更優雅,但是它們比捕獲異常要好。
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
你可以用它來理解
val length = for(col1 <- myMap.get("col1");
str <- col1.get("XXX")) yield str.first
val res = length.getOrElse(0)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.