Scala 選項

2022-05-13 14:26 更新

Option 允許我們在沒有null“hack”的情況下顯式地表達空值。

Option是一個抽象類,它的兩個具體子類是Some,當我們有一個值,而None,當我們沒有。

例子

您可以在以下示例中查看選項,一些和無操作,其中我們在美國創(chuàng)建州首府地圖:

object Main {
  def main(args: Array[String]) {
     val stateCapitals = Map( 
       "Alabama" -> "Montgomery", 
       "Alaska"  -> "Juneau", 
       "Wyoming" -> "Cheyenne") 

     println( "Get the capitals wrapped in Options:" ) 
     println( "Alabama: " + stateCapitals.get("Alabama") ) 
     println( "Wyoming: " + stateCapitals.get("Wyoming") ) 
     println( "Unknown: " + stateCapitals.get("Unknown") ) 

     println( "Get the capitals themselves out of the Options:" ) 
     println( "Alabama: " + stateCapitals.get("Alabama").get ) 
     println( "Wyoming: " + stateCapitals.get("Wyoming").getOrElse("Oops!") ) 
     println( "Unknown: " + stateCapitals.get("Unknown").getOrElse("Oops2!") ) 

  }
}

注意

Map.get方法返回一個 Option [T] ,在這種情況下 T 是String。

通過返回一個選項,我們不能“忘記”我們必須驗證返回的東西。

如果 Option Some ,則 Some.get 返回值。

如果 Option 實際上是 None ,那么 None.get 將拋出一個 NoSuchElementException 異常。

在最后兩個println語句中的getOrElse返回 Option 中的值,如果它是一個 Some 實例,或者返回傳遞給 getOrElse 的參數(shù),如果它是一個 None 實例。

getOrElse 參數(shù)作為默認返回值。

以上內容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號