1. 程式人生 > 其它 >Scala基礎-getOrElse()方法

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