函数调用的顺序

时间:2017-03-20 13:00:37

标签: scala

我有以下代码段:

  def traverse[E, A, B](es: List[A])(f: A => Either[E, B]): Either[E, List[B]] =
    es match {
      case Nil => Right(Nil)
      case h :: t => (f(h) map2 traverse(t)(f)) (_ :: _)
    }

map2函数实现:

  def map2[EE >: E, B, C](b: Either[EE, B])(f: (A, B) => C): Either[EE, C] =
    for {
      aa <- this
      bb <- b
    } yield (f(aa, bb))

我不明白的是这段代码:

(f(h) map2 traverse(t)(f)) (_ :: _)

首先,函数f将应用于参数h。之后,它会调用map2函数,直到它到达Nil中的List。什么是(_ :: _)函数?所以奇怪的函数调用。

0 个答案:

没有答案