【发布时间】:2018-10-04 20:58:30
【问题描述】:
我在研究曼宁出版的scala红皮书
List 实现是一个案例类:
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的方法签名
【问题讨论】:
-
谢谢,我在你的问题中找到了答案:D 这是关于如何在 Scala 中定义
foldRight
标签: scala functional-programming