了解getOrElse用法和无点函数组合

时间:2017-03-17 16:17:16

标签: scala

我有以下代码:

sealed trait Option[+A] {

  def map[B](f: A => B): Option[B] = this match {
    case None => None
    case Some(a) => Some(f(a))
  }

  def getOrElse[B>:A](default: => B): B = this match {
    case None => default
    case Some(a) => a
  }

  def flatMap[B](f: A => Option[B]): Option[B] =
    map(f) getOrElse None
}
case class Some[+A](get: A) extends Option[A]
case object None extends Option[Nothing]

flatMap函数的主体,它是如何工作的?它不是一个功能组合。它叫什么样的功能?

如何使用getOrElse方法?

1 个答案:

答案 0 :(得分:4)

map(f) getOrElse None相当于表达式map(f).getOrElse(None),只需使用输入map()调用f函数,然后在结果上调用getOrElse即可返回Some(x)None的值x,以便地图返回None

Some(5).getOrElse(0)将返回5 None.getOrElse(0)将返回0