Scala基礎-getOrElse()方法
參考連結:
https://zhuanlan.zhihu.com/p/90326421
https://www.jianshu.com/p/0de79845eaa4
Scala基礎-getOrElse()方法
getOrElse()主要就是防範措施,如果有值,那就可以得到這個值,如果沒有就會得到一個預設值,個人認為早開發過程中用getOrElse()方法要比用get()方法安全得多。
def getOrElse[B1 >: B](key: A, default: => B1): B1 = get(key) match {
case Some(v) => v
case None => default
}
從API中可以看出,傳入的引數是(key,default)這種形式,返回值是:如果有key那就get(key),如果沒有,就返回default,再看看get()方法:
def get(key: A): Option[B]
傳入一個key,得到這個key的對映。注意:如果單獨呼叫get()方法,這裡返回的是一個Option,如果要返回值需要繼續get:get().get
看一個簡單的例子:
object Test5 {
def main(args: Array[String]): Unit = {
var map=Map[Int,String]()
map+=(1->"one",2->"two")
println(map.getOrElse(1,"default"))
println(map.getOrElse(2,"default"))
println(map.getOrElse(3,"default"))
}
}
得到的結果:
one
two
default
很顯然,當你想獲得1,2的value的時候,map中是有值的,是可以獲得的,而當你想獲得3的值,map中並不存在,只能獲得預設值。你想getOrElse的值必然是一個鍵值對的形式。
另:scala中的getOrElse用法
getOrElse作用
- getOrElse大部分時候用於Map、option中有可能存在空值或不存在要查詢的值的情況,其作用類似於:
val result = Option(變數) match { case Some(value) => // 有值 // todo case None => // 沒有值時的處理 }
- Map中的用法
myMap.getOrElse("key", "no key")
//當在"key"在Map中不存在時,則返回"no key"
- Option中的用法
val op1 = Option[String]("exists")
val op2 = None
println(op1.getOrElse("no value"))
println(op2.getOrElse("no value"))
並且輸出的時候要帶getOrElse
第一個輸出 exists
第二個輸出 no value
val op1 = Option[String]("exists")
val op2 = None
println(op1)
println(op2)
第一個輸出 Some(exists)
第二個輸出 None
//所有option的型別輸出要帶getOrElse