scala Option,None和Some

option的出現是爲了解決null存在各類歧義的狀況。最多見的一種狀況是假設咱們對一個map去值,咱們調用Map.get(「key」)方法,在java中若是咱們獲得結果爲null,可能表明這個」key」存在,可是對應的value爲空,也可能表明這個」key」不存在於map中。所以在scala中有了option這個類來解決返回null的問題。 
  在Java 裏,null 是一個關鍵字,不是一個對象,因此對它調用任何方法都是非法的。可是這對語言設計者來講是一件使人疑惑的選擇。爲何要在程序員但願返回一個對象的時候返 回一個關鍵字呢?爲了讓全部東西都是對象的目標更加一致,也爲了遵循函數式編程的習慣,Scala 鼓勵你在變量和函數返回值可能不會引用任何值的時候使用Option 類型。在沒有值的時候,使用None。若是有值能夠引用,就使用Some 來包含這個值。none和some是option的子類。java

val temp = Map(
  "a" -> "A",
  "b" -> "B",
  "c"->"C",
  "d"->"D",
"e"->null
)
println( "a: " + temp.get("a").get )
println( "b: " + temp.get("b").get )
println( "e: " + temp.get("e").get)
//會報Exception in thread "main" java.util.NoSuchElementException: None.get錯
//println( "f: " + temp.get("f").get)
println( "f: " + temp.get("f").getOrElse("F"))

輸出以下:程序員

a: A
b: B
e: null
f: F
相關文章
相關標籤/搜索