我有以下代码:
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
方法?
答案 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