scala:使用foldRight追加列表

scala:使用foldRight追加列表,scala,functional-programming,Scala,Functional Programming,我在研究曼宁出版的scala红皮书 列表实现是一个案例类: case class Cons[+A](head: A, tail: List[A]) extends List[A] foldRight的定义如下: def foldRight[A, B](as: List[A], z: B)(f: (A, B) => B): B 并作为 def foldRight[A, B](as: List[A], z: B)(f: (A, B) => B): B = { // Utilit

我在研究曼宁出版的scala红皮书

列表实现是一个案例类:

case class Cons[+A](head: A, tail: List[A]) extends List[A]
foldRight的定义如下:

def foldRight[A, B](as: List[A], z: B)(f: (A, B) => B): B 
并作为

  def foldRight[A, B](as: List[A], z: B)(f: (A, B) => B): B = { // Utility functions
    as match {
      case Nil => z
      case Cons(h, t) => f(h, foldRight(t, z)(f))
    }
  }
要将一个列表附加到另一个列表,我的解决方案是:

  def append[A](l1: List[A], l2: List[A]): List[A] 
      = foldRight(l1, l2)((l1head,l2)=>Cons(l1head, l2))
但是,应答键显示以下代码:

  def append[A](l1: List[A], l2: List[A]): List[A] = foldRight(l1, l2)(Cons(_, _))
问题:
(Cons(,))
如何符合
f:(A,B)=>B

这两个
append()
示例完全相同。第一个下划线是“第一个传入参数”的简写,第二个下划线是“第二个传入参数”的简写。这只是引用它们并将它们传递给
Cons
构造函数的一种简便方法,而无需为每个参数命名

另请参见。

两个
append()
示例完全相同。第一个下划线是“第一个传入参数”的简写,第二个下划线是“第二个传入参数”的简写。这只是引用它们并将它们传递给
Cons
构造函数的一种简便方法,而无需为每个参数命名

另请参见问题的各种答案