簡體   English   中英

Scala Map java.util.NoSuchElementException:找不到鍵優雅

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM