我有如下程序,例如,可以使用sum(x=>x)(1,2)
来运行它。
我不明白的是,为什么我们可以在没有参数的最后一行写sumF
?我找不到关于此的解释。
谢谢。
def sum(f: Int => Int) : (Int, Int) => Int = {
def sumF(a:Int, b:Int) : Int = {
if (a > b) 0
else f(a) + sumF(a + 1, b)
}
sumF
}
答案 0 :(得分:4)
sum
函数的返回值是类型的函数
(Int, Int) => Int
sumF
是
在Scala中,如果没有返回值,则将最后一个表达式视为返回值。因此,如果最后一个表达式是您要返回的内容,则可以省略return关键字
您正在寻找的是一个高阶函数。 sum
是一个函数,它接受一个函数f
作为其参数,并返回一个带2个整数并返回一个Int的arity 2函数(这是sumF
的确切类型签名)。