添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

Scala Option(选项)

Scala Option(选项)类型表示一个值得可选的(有值或者无值)。

Option[T] 是一个类型为T的可选值得容器:如果值存在,Option[T]就是一个Some[T],如果不存在,Option[T]就是对象None。

接下来看一段代码:

val myMap:Map[Int,String] = Map(1 -> "tom")
val v1:Option[String] = myMap.get(1)
val v2:Option[String] = myMap.get(2)
println(v1)    // 打印Some("tom")
println(v2)    // 打印None

在上面代码中,myMap是一个Key类型为Int,Value类型为String,的Map,但不一样的是它的get()方法的返回值是一个类型为Option[String]的类别。

Scala使用Option[String]来告诉你: 我会想办法回传一个String,但是也有可能没有String给你

myMap里面没有key为2的值,所以get方法返回None。

Option有两个子类别,一个是Some,一个是None,当和回传Some的时候,代笔这个函数成功的回传给你一个String,而你可以通过get()函数拿到那个String,如果它返回的是None,则代表没有字符串可以给你。

getOrElse()方法

乜可以使用getOrElse()方法来获取元组中存在的元素或则使用其默认的值,示例如下:

object Test {
   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) )
//执行结果如下
a.getOrElse(0): 5
b.getOrElse(10): 10

isEmpty()方法

你可以使用 isEmpty() 方法来检测元组中的元素是否为 None,实例如下:

object Test {
   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 )
//上述代码执行结果如下
a.isEmpty: false
b.isEmpty: true

Scala Option常用方法

方法名 描述
def get : A 获取可选值
def isEmpty : Boolean 检测可选类型值是否为None,是返回true,否则为false
def productArity : Int 返回元素个数
def productElement(n : Int) : Any 获取指定的可选项,以0为起始。
def exists(p: (A) => Boolean):Boolean 如果可选项中指定条件的元素是否存在,如果存在返回true,否则为false
def filter(p: (A) => Boolean): Option[A] 如果选项包含有值,而且传递给 filter 的条件函数返回 true, filter 会返回 Some 实例。 否则,返回值为 None
def filterNot(p: (A) => Boolean): Option[A] 如果选项包含有值,而且传递给 filter 的条件函数返回 false, filter 会返回 Some 实例。 否则,返回值为 None
def flatMap[B](f: (A) => Option[B]): Option[B] 如果选项包含有值,则传递给函数 f 处理后返回,否则返回 None
def foreach[U](f: (A) => U): Unit 如果选项包含有值,则将每个值传递给函数 f, 否则不处理。
def getOrElse[B >: A](default: => B): B 如果选项包含有值,返回选项值,否则返回设定的默认值
def isDefined: Boolean 如果可选值是 Some 的实例返回 true,否则返回 false
def iterator: Iterator[A] 如果选项包含有值,迭代出可选值。如果可选值为空则返回空迭代器。
def map[B](f: (A) => B): Option[B] 如果选项包含有值, 返回由函数 f 处理后的 Some,否则返回 None
def orElse[B >: A](alternative: => Option[B]): Option[B] 如果一个 Option 是 None , orElse 方法会返回传名参数的值,否则,就直接返回这个 Option。
def orNull 如果选项包含有值返回选项值,否则返回 null

http://www.runoob.com/scala/scala-options.html

Scala Option(选项)Scala Option(选项)类型表示一个值得可选的(有值或者无值)。Option[T] 是一个类型为T的可选值得容器:如果值存在,Option[T]就是一个Some[T],如果不存在,Option[T]就是对象None。接下来看一段代码:val myMap:Map[Int,String] = Map(1 -> "tom")val v1:Option[String
一、 Scala 中的 Option 类型的作用 Scala 中的 Option 类型是为了让所有东西都是对象的目标更加一致,也为了遵循函数式编程的习惯, scala 鼓励你在变量和函数返回值可能不会引用任何值的时候使用 Option 类型。在没有值的时候,使用None,它是 Option 的一个子类;在有值的时候,就用Some来包含这个值,它也是 Option 的一个子类。 二、 Scala Option 类型的用法 Scala Option ( 选项 )类型用来表示一个值是可选的(有值或无值)。 Option [T] 是一个类型为 T 的可选值
避免null的使用 大多数语言都有一个特殊的关键字或者对象表示一个对象的引用是“无”,在java里,它是null。在java里,null是一个关键字,不是一个对象,所以对它调用任何方法都是非法的。但是为什么要在程序员希望返回一个对象的时候,返回一个关键字呢? Scala Option 类型 为了让所有东西都是对象的目标更加一致,也为了遵循函数式编程的习惯, scala 鼓励你在变量和函数返回值可能...
Scala 中,`flatMap` 是一个高阶函数,它接受一个函数作为参数并返回一个新的集合。`flatMap` 通常用于将一个嵌套的集合转换为一个扁平的集合。 具体来说,`flatMap` 对于集合中的每个元素都会应用一个函数,并将结果扁平化到一个新的集合中。如果函数返回的是一个集合,那么该集合中的元素将被添加到新集合中。 以下是一个使用`flatMap`的示例: ``` scala val list = List(List(1, 2), List(3, 4)) val flatList = list.flatMap(x => x) println(flatList) //输出: List(1, 2, 3, 4) 在上面的示例中,`flatMap` 接受一个函数 `x => x`,这个函数将每个子列表都返回并将它们扁平化到一个新的列表中。最终得到的 `flatList` 是一个扁平化的列表,其中包含原始列表中所有的元素。 另一个使用 `flatMap` 的常见场景是在集合中应用过滤器后进行映射。 ``` scala val list = List(1, 2, 3, 4, 5, 6, 7, 8, 9, 10) val result = list.filter(_ % 2 == 0).flatMap(x => List(x, x * 2)) println(result) //输出: List(2, 4, 4, 8, 6, 12, 8, 16, 10, 20) 在上面的示例中,`filter` 函数过滤出偶数,然后 `flatMap` 函数将这些偶数和它们的两倍映射到一个新的列表中。最终得到的 `result` 是一个扁平化的列表,其中包含了原始列表中所有的偶数及其两倍。