1

我正在浏览 Coursera 中教授的 Scala 函数式编程视频。我遇到了这些代码

def averageDamp(f: Double => Double)(x: Double) = (x + f(x)) / 2

及其实施为

  def sqrt(x: Double): Double = fixedPoint(averageDamp(y => y / x))(1)

但不能在表格中使用它

  averageDamp(x => x)

它说这个论点是缺失的。在上述情况下是否也缺少论点。有人帮忙。提前致谢 :)

4

1 回答 1

0

关键字是currying. 当averageDamp如上定义时,averageDamp将期望两个参数。当您仅使用第一个参数编写它时,它将返回一个接受另一个参数的函数(闭包)。这就是为什么argument is missing当你称它为 like 时它说的原因averageDamp(x => x)。你只是调用一个没有参数的函数,它需要一个。要实际评估值,您应该将其称为averageDamp(some_function)(double_value).

结帐: http: //www.codecommit.com/blog/scala/function-currying-in-scala

于 2016-08-13T14:31:36.100 回答