- Scala 集合教程
- Scala 集合 - 首頁
- Scala 集合 - 概述
- Scala 集合 - 環境設定
- Scala 集合 - 陣列
- Scala 集合 - 陣列
- Scala 集合 - 多維陣列
- Scala 集合 - 使用 Range 建立陣列
- Scala 集合 - ArrayBuffer
- Scala 集合 - 列表
- Scala 集合 - 列表
- Scala 集合 - ListBuffer
- Scala 集合 - ListSet
- Scala 集合 - 向量
- Scala 集合 - 集合
- Scala 集合 - 集合
- Scala 集合 - BitSet
- Scala 集合 - HashSet
- Scala 集合 - TreeSet
- Scala 集合 - 對映
- Scala 集合 - 對映
- Scala 集合 - HashMap
- Scala 集合 - ListMap
- Scala 集合 - 其他
- Scala 集合 - 迭代器
- Scala 集合 - Option
- Scala 集合 - 佇列
- Scala 集合 - 元組
- Scala 集合 - Seq
- Scala 集合 - 棧
- Scala 集合 - 流
- Scala 集合組合器方法
- Scala 集合 - drop
- Scala 集合 - dropWhile
- Scala 集合 - filter
- Scala 集合 - find
- Scala 集合 - flatMap
- Scala 集合 - flatten
- Scala 集合 - fold
- Scala 集合 - foldLeft
- Scala 集合 - foldRight
- Scala 集合 - map
- Scala 集合 - partition
- Scala 集合 - reduce
- Scala 集合 - scan
- Scala 集合 - zip
- Scala 集合有用資源
- Scala 集合 - 快速指南
- Scala 集合 - 有用資源
- Scala 集合 - 討論
Scala 集合 - Option
Scala 的 `Option[T]` 是一個容器,它包含零個或一個給定型別的元素。一個 `Option[T]` 可以是 **`Some[T]`** 或 **`None`** 物件,後者表示缺少值。例如,Scala 的 `Map` 的 `get` 方法如果找到與給定鍵對應的值,則返回 `Some(value)`;如果給定鍵在 `Map` 中未定義,則返回 **`None`**。
Option 型別在 Scala 程式中經常使用,您可以將其與 Java 中表示無值的 **`null`** 值進行比較。例如,`java.util.HashMap` 的 `get` 方法要麼返回儲存在 `HashMap` 中的值,要麼在未找到值時返回 `null`。
假設我們有一個方法,它根據主鍵從資料庫中檢索記錄。
def findPerson(key: Int): Option[Person]
如果找到記錄,該方法將返回 `Some[Person]`;如果未找到記錄,則返回 `None`。讓我們按照以下程式。
示例
object Demo {
def main(args: Array[String]) {
val capitals = Map("France" -> "Paris", "Japan" -> "Tokyo")
println("capitals.get( \"France\" ) : " + capitals.get( "France" ))
println("capitals.get( \"India\" ) : " + capitals.get( "India" ))
}
}
將上述程式儲存為 **`Demo.scala`**。使用以下命令編譯和執行此程式。
命令
\>scalac Demo.scala \>scala Demo
輸出
capitals.get( "France" ) : Some(Paris) capitals.get( "India" ) : None
處理可選值最常見的方法是透過模式匹配。例如,嘗試以下程式。
示例
object Demo {
def main(args: Array[String]) {
val capitals = Map("France" -> "Paris", "Japan" -> "Tokyo")
println("show(capitals.get( \"Japan\")) : " + show(capitals.get( "Japan")) )
println("show(capitals.get( \"India\")) : " + show(capitals.get( "India")) )
}
def show(x: Option[String]) = x match {
case Some(s) => s
case None => "?"
}
}
將上述程式儲存為 **`Demo.scala`**。使用以下命令編譯和執行此程式。
命令
\>scalac Demo.scala \>scala Demo
輸出
show(capitals.get( "Japan")) : Tokyo show(capitals.get( "India")) : ?
使用 getOrElse() 方法
以下示例程式演示如何使用 `getOrElse()` 方法訪問值或在沒有值時使用預設值。
示例
object Demo {
def main(args: Array[String]) {
val a:Option[Int] = Some(5)
val b:Option[Int] = None
println("a.getOrElse(0): " + a.getOrElse(0) )
println("b.getOrElse(10): " + b.getOrElse(10) )
}
}
將上述程式儲存為 **`Demo.scala`**。使用以下命令編譯和執行此程式。
命令
\>scalac Demo.scala \>scala Demo
輸出
a.getOrElse(0): 5 b.getOrElse(10): 10
使用 isEmpty() 方法
以下示例程式演示如何使用 `isEmpty()` 方法檢查選項是否為 `None`。
示例
object Demo {
def main(args: Array[String]) {
val a:Option[Int] = Some(5)
val b:Option[Int] = None
println("a.isEmpty: " + a.isEmpty )
println("b.isEmpty: " + b.isEmpty )
}
}
將上述程式儲存為 **`Demo.scala`**。使用以下命令編譯和執行此程式。
命令
\>scalac Demo.scala \>scala Demo
示例
a.isEmpty: false b.isEmpty: true
廣告