Scala 选项

2022-05-13 14:26 更新

Option 允许我们在没有null“hack”的情况下显式地表达空值。

Option是一个抽象类,它的两个具体子类是Some,当我们有一个值,而None,当我们没有。

例子

您可以在以下示例中查看选项,一些和无操作,其中我们在美国创建州首府地图:

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 的参数,如果它是一个 None 实例。

getOrElse 参数作为默认返回值。

以上内容是否对您有帮助:
在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号