假设我有
var mp = Map[String,String]()
.....
val n = mp("kk")
Run Code Online (Sandbox Code Playgroud)
如果键"kk"不存在,上面将抛出运行时错误.
我预计在密钥不存在的情况下,n将为null.如果key不存在,我希望n为null.
使用短代码示例在scala中处理这种情况的正确方法是什么?
Dav*_*ith 51
首先,您可能并不真正想要null,因为这几乎总是Scala中编码错误的迹象.你想要的是n是Option [String]类型,它表示该值是String或缺失.正确的方法是使用地图上的.get()方法
val n = mp.get("kk")
Run Code Online (Sandbox Code Playgroud)
如果你确实需要null(例如,对于Java库的互操作),你可以使用.getOrElse()
val n = mp.getOrElse("kk", null)
Run Code Online (Sandbox Code Playgroud)
Jea*_*let 20
试试这个:
val valueOpt = mp.get("kk")
Run Code Online (Sandbox Code Playgroud)
您的结果是类型Option[String]
,可以是None
或Some(actualValue)
.您可以使用模式匹配来查找:
valueOpt match {
case Some(value) => println(value)
case None => println("default")
}
Run Code Online (Sandbox Code Playgroud)
然而,更合适的方法是使用这些方法Option
,例如:
println(valueOpt.getOrElse("default"))
Run Code Online (Sandbox Code Playgroud)
在Option
那里寻找API文档.
编辑:请注意,Map
它本身也直接定义了一个getOrElse
方法,如Dave的回答所示.
归档时间: |
|
查看次数: |
35240 次 |
最近记录: |