从另一个Kotlin函数返回递归函数

Him*_*shu 5 kotlin

这是Kotlin相当于从Coursera上的Scala MOOC中获取的函数.它返回一个函数,它在一个范围(a..b)上应用给定的映射器(f)

fun sum(f: (Int) -> Int): (Int, Int) -> Int {
    fun sumF(a: Int, b: Int): Int =
            if (a > b) 0
            else f(a) + sumF(a + 1, b)
    return sumF
}
Run Code Online (Sandbox Code Playgroud)

但IntelliJ显示了这些错误.如何从这里返回功能. 在此输入图像描述

hot*_*key 3

当定义命名函数 ( fun foo(...)) 时,不能将其名称用作表达式。

相反,您应该对其进行函数引用:

return ::sumF
Run Code Online (Sandbox Code Playgroud)

另请参阅:为什么 Kotlin 需要函数引用语法?