2015-04-30 28 views

回答

4

我們可以把它放在斯卡拉Map[String, Int]的上下文中。

Map("a" -> Option(1), "b" -> None) 

m.get(key)有三種可能的輸出類型。

如果密鑰存在,並有一個值,我們得到Some(Some(1))

scala> m.get("a") 
res28: Option[Option[Int]] = Some(Some(1)) 

如果密鑰存在但沒有值,我們得到Some(None)

scala> m.get("b") 
res29: Option[Option[Int]] = Some(None) 

如果密鑰根本不存在,我們得到None

scala> m.get("c") 
res30: Option[Option[Int]] = None 

,你需要編碼三種狀態這是在的情況下非常有用:

  • 存在與價值
  • 存在沒有價值
  • 不存在

大多數我們(我)不關心第二種情況,所以我們崩潰到Option[Int],但它肯定是你的seful。

+0

REPL輸出類型的密封它,其餘的輸出也很有幫助。謝謝! –

5

示例:打開文件並從中讀取Int的函數。

  • 如果沒有文件,你會得到一個None
  • 如果有一個文件,但它裏面沒有整數,你會得到一個Some(None)
  • 如果有一個文件,但它包含一個123,你會得到一個Some(Some(123))
+0

謝謝,我很欣賞答案! –

相關問題