Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.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代码是如何工作的?_Scala - Fatal编程技术网

这个递归Scala代码是如何工作的?

这个递归Scala代码是如何工作的?,scala,Scala,我有以下代码片段: def sequence[A](a: List[Option[A]]) : Option[List[A]] = a match { case Nil => Some(Nil) case h :: t => h flatMap (hh => sequence(t) map (hh :: _)) } 递归是如何工作的?递归会首先发生(调用sequence(t)直到它得到Nil),然后执行map吗?第二个问题的答案是肯定的。map在seq

我有以下代码片段:

def sequence[A](a: List[Option[A]]) : Option[List[A]] =
  a match {
    case Nil => Some(Nil)
    case h :: t => h flatMap (hh => sequence(t) map (hh :: _))
  }

递归是如何工作的?递归会首先发生(调用
sequence(t)
直到它得到
Nil
),然后执行map吗?

第二个问题的答案是肯定的。
map
sequence(t)
返回一个要映射的值之前不能开始。谢谢大家。