您好我是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)
}
}
答案 0 :(得分:2)
sumOf
是一个curried函数,所以它采用sumOf(x => x)(4,5)
形式的两个参数,它与sumOf(x => x, 4,5)
不同。这就是你收到错误的原因。
此外,您可以只使用一个参数sumOf(x => x) _
来调用它,该参数返回另一个接受第二个参数的函数
(Int, Int) => Int = <function2>
并返回一个函数。这通常称为部分功能应用。
答案 1 :(得分:1)
您的sumOf
方法有两个参数列表,需要使用两个参数列表进行调用。
val y = sumOf(x => x)(4, 5)
您可以将sumOf
视为一个函数,该函数接受Int => Int
并返回一个新函数,该函数需要两个Int才能返回一个Int。