Scala 使用(…)(…)函数时参数太多
我来自不同的编程语言(主要是解释语言),现在正在学习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) /
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)