- Scala 集合教程
- Scala 集合 - 主页
- Scala 集合 - 概述
- Scala 集合 - 环境设置
- Scala 集合 - 数组
- Scala 集合 - 数组
- Scala 集合 - 多维数组
- Scala 集合 - 使用范围的数组
- 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 集合 - 选项
- Scala 集合 - 队列
- Scala 集合 - 元组
- Scala 集合 - Seq
- Scala 集合 - 堆栈
- Scala 集合 - Stream
- Scala 集合组合器方法
- Scala 集合 - drop
- Scala 集合 - dropWhile
- Scala 集合 - 过滤器
- Scala 集合 - 查找
- Scala 集合 - flatMap
- Scala 集合 - 展平
- Scala 集合 - 折叠
- Scala 集合 - FoldLeft
- Scala 集合 - FoldRight
- Scala 集合 - 地图
- Scala 集合 - 分区
- Scala 集合 - 减少
- Scala 集合 - 扫描
- Scala 集合 - zip
- Scala 集合有用的资源
- Scala 集合 - 快速指南
- Scala 集合 - 有用的资源
- Scala 集合 - 讨论
Scala 集合 - 选项
Scala Option[ T ] 是给定类型的零个或一个元素的容器。Option[T] 可以是Some[T]或None对象,它表示缺失值。例如,如果找到与给定键对应的值,则 Scala 的 Map 的 get 方法将生成 Some(value);如果给定键未在 Map 中定义,则生成None 。
选项类型在 Scala 程序中经常使用,您可以将其与Java 中表示没有值的空值进行比较。例如,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