Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala 使用(…)(…)函数时参数太多_Scala - Fatal编程技术网

Scala 使用(…)(…)函数时参数太多

Scala 使用(…)(…)函数时参数太多,scala,Scala,我来自不同的编程语言(主要是解释语言),现在正在学习Scala。我正在做下面的练习,我得到一个错误 def sum(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) } sum(x => x * x, 2, 4) /

我来自不同的编程语言(主要是解释语言),现在正在学习Scala。我正在做下面的练习,我得到一个错误

def sum(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)
 }
 sum(x => x * x, 2, 4) //Too many arguments  

我看不出哪里出了问题

您已使用定义了
sum
,但尝试仅使用一个来调用它


语法上正确的调用方法是
sum(x=>x*x)(2,4)

函数必须以显式的curried形式调用(必须有更好的名称),因为它是这样定义的:

sum(x => x * x)(2, 4)

//def sum (f: Int => Int) (a: Int, b: Int):
//    sum (x => x * x)    (2,      4)
但这也很简洁,因为一次只需评估咖喱表单的一部分:

val sumOfSquares = sum(x => x * x)
val s = someOfSquares(2,4)

如果用多个括号(多个参数列表)声明函数,还必须这样调用它(咖喱格式):

有关更多信息,请参阅

sum(x => x * x)(2, 4)