Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala 了解getOrElse用法和无点函数组合_Scala - Fatal编程技术网

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

Scala 了解getOrElse用法和无点函数组合,scala,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

我有以下代码:

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
方法?

map(f)getOrElse None
相当于表达式
map(f)。getOrElse(None)
只需使用输入
f
调用
map()
函数,然后对结果调用
getOrElse
,返回
Some(x)的值x
None
,以防map返回
None

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

map(f)getOrElse None
相当于表达式
map(f)。getOrElse(None)
只需使用输入
f
调用
map()
函数,然后对结果调用
getOrElse
,这将返回
Some(x)的值x
None
,以防map返回
None

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

Do
map(f)
返回对象选项,因为我可以进行方法链接?是的,getOrElse在选项上定义。Do
map(f)
返回对象选项,因为我可以进行方法链接?是的,getOrElse在选项上定义。