调用高阶函数- Scala



嗨,我是Scala的新手,试图从主类调用高阶函数sum_of。我得到"无法解决引用sumOf与这样的签名错误"。

object SumOf {
  def main(args: Array[String]) {
   val y =  sumOf(x=>x ,4,5)
    println(y)
  }
  def sumOf(f: Int => Int)(a: Int, b: Int): Int = {
    def loop(a: Int, acc: Int): Int =
      if (a > b) acc
      else loop(a + 1, f(a) + acc)
      loop(a, 0)
    }
}

sumOf是一个柯里函数,所以它有两个参数,sumOf(x => x)(4,5)的形式不同于sumOf(x => x, 4,5)。这就是你得到错误的原因。

此外,您可以只使用一个参数sumOf(x => x) _调用它,该参数返回另一个接受第二个参数的函数(Int, Int) => Int = <function2>并返回一个函数。这通常被称为部分函数应用。

您的sumOf方法有两个参数列表,并且需要使用两个参数列表调用

val y = sumOf(x => x)(4, 5)

可以把sumOf看作一个函数,它接受一个Int => Int,然后返回一个新函数,这个新函数接受两个Int,返回一个Int。

最新更新