var mp = Map[String,String]()
.....
val n = mp("kk")
以上將拋出運行時錯誤的情況下,關鍵的「KK」是不存在的。
我預計n在密鑰不存在的情況下將爲空。如果密鑰不存在,我希望n爲空。
什麼是正確的方式來處理這種情況在斯卡拉短代碼示例?
var mp = Map[String,String]()
.....
val n = mp("kk")
以上將拋出運行時錯誤的情況下,關鍵的「KK」是不存在的。
我預計n在密鑰不存在的情況下將爲空。如果密鑰不存在,我希望n爲空。
什麼是正確的方式來處理這種情況在斯卡拉短代碼示例?
首先,您可能並不是真的想要null,因爲這幾乎總是Scala中編碼不良的標誌。你想要的是n的類型是Option [String],它表示該值是一個String或缺少。要做到這一點,正確的做法是與獲得()方法對你映射
val n = mp.get("kk")
如果你真的需要空(與Java庫的互操作,例如),您可以使用.getOrElse()
val n = mp.getOrElse("kk", null)
mp.get(「kk」)。orNull :) –
試試這個:
val valueOpt = mp.get("kk")
你的結果是Option[String]
型的,可以是None
或Some(actualValue)
。您可以使用模式匹配,找出:
valueOpt match {
case Some(value) => println(value)
case None => println("default")
}
一個更合適的方式做這種事情,然而,就是用在Option
的方法,例如:
println(valueOpt.getOrElse("default"))
查找的API文檔爲Option
there。
編輯:注意Map
本身直接定義了一個getOrElse
方法,也因爲在Dave的答案中。
切勿在scala中使用'null'。空值被選項「替換」。 – paradigmatic