Scala Options函数详解

首页 / Scala入门教程 / Scala Options函数详解

Scala Option [T]是给定类型的零个或一个元素的容器, Option [T]可以是 Some [T] 或 None 对象,表示缺少值,如果找到了与给定键相对应的值,则Scala Map的get方法将生成Some(value);如果未在Map中定义给定键,则生成 None 。

假设我们有一个基于主键从数据库中检索记录的方法。

def findPerson(key: Int): Option[Person]

如果找到记录,该方法将返回Some [Person],如果找不到记录,则返回None。让我们遵循以下程序。

Scala Options - 示例1

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

将可选值分开的最常见方法是通过模式匹配。如尝试以下程序。

Scala Options - 示例2

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

Scala Options - 方法

以下是在使用"options"时可以使用的重要方法。有关可用方法的完整列表,请查看Scala的官方文档。

Sr.NoMethods with 描述
1

def get:A

返回选项的值。

2

def isEmpty:Boolean

如果选项为None,则返回true,否则返回false。

3

def productArity:Int

对于乘积A(x_1,...,x_k),返回k

4

def productElement(n:Int):Any

第n个元素,从0开始。换句话说,对于乘积A(x_1,...,x_k),返回x_(n + 1),其中0 <n <k。

5

def exists(p: (A) => Boolean): Boolean

如果此选项为非空,则返回true,并且断言p应用于此选项的值时将返回true。否则,返回false。

6

def filter(p: (A) => Boolean): Option[A]

如果它是非空的,则返回此选项,并将断言p应用于此选项的值将返回true。否则,返回None。

7

def filterNot(p: (A) => Boolean): Option[A]

如果它是非空的,则返回此Option,并将断言p应用于此Option的值将返回false。否则,返回None。

8

def flatMap[B](f: (A) => Option[B]): Option[B]

如果此Option非空,则返回将f应用于此Option的值的输出。如果此options为空,则返回None。

9

def foreach[U](f: (A) => U): Unit

如果该过程的值是非空的,则将其应用于该选项的值。否则,什么都不做。

10

def getOrElse[B >: A](default: => B): B

如果选项非空,则返回选项的值,否则返回判断默认值的输出。

链接:https://www.learnfk.comhttps://www.learnfk.com/scala/scala-options.html

来源:LearnFk无涯教程网

11

def isDefined:Boolean

如果该选项是Some的,则返回true,否则返回false。

12

def iterator:Iterator [A]

如果非空则返回Option的值,如果选项为空,则返回一个空迭代器。

13

def map[B](f: (A) => B): Option[B]

如果此Option为非空,则返回包含将f应用于此Option的值的输出的Some。否则返回None。

14

def orElse[B >: A](alternative: => Option[B]): Option[B]

如果它是非空的,则返回此Option,否则返回判断Alternative的输出。

无涯教程网

15

def orNull

如果选项为非空,则返回其值;如果为空,则返回null。

祝学习愉快!(内容编辑有误?请选中要编辑内容 -> 右键 -> 修改 -> 提交!)

技术教程推荐

微服务架构核心20讲 -〔杨波〕

算法面试通关40讲 -〔覃超〕

罗剑锋的C++实战笔记 -〔罗剑锋〕

Selenium自动化测试实战 -〔郭宏志〕

手机摄影 -〔@随你们去〕

基于人因的用户体验设计课 -〔刘石〕

爆款文案修炼手册 -〔乐剑峰〕

Redis源码剖析与实战 -〔蒋德钧〕

遗留系统现代化实战 -〔姚琪琳〕

好记忆不如烂笔头。留下您的足迹吧 :)