Scala`Application不带参数`编译错误

时间:2016-07-28 02:08:06

标签: scala compiler-errors functional-programming higher-order-functions

我试图想出一个简单的函数,它接受一个函数和整数列表,并在列表中的每个整数上应用函数 -

    def IntOps(f: Int => Int)(values: List[Int]): Int = {
     if(values.isEmpty) 0
     //Getting "Application does not take parameters" in values.tail
     else IntOps(f(values.head)(values.tail))
    }
    IntOps(x=> x+x)(List(1, 2, 30)

我在Application does not take parameters上遇到编译错误values.tail,我是函数式编程和scala的初学者,所以任何指针或答案都可以理解这一点。

1 个答案:

答案 0 :(得分:3)

这行代码有两个问题。

IntOps(f(values.head)(values.tail))
  1. 错误括号 - IntOps采用两个参数列表,每个参数列表中包含一个参数。
  2. 第一个参数的错误类型 - 第一个参数需要是一个函数Int => Int,这是f的内容,但是您正在调用f,它返回{{1} }},这不是Int所要求的。