功能采取其他功能

如“Lambda 函数”中所示,函数可以将其他函数作为参数。你需要声明具有其他功能的函数的函数类型如下:

# Takes no parameters and returns anything
() -> Any?

# Takes a string and an integer and returns ReturnType
(arg1: String, arg2: Int) -> ReturnType

例如,你可以使用最模糊的类型 () -> Any? 来声明一个执行 lambda 函数两次的函数:

fun twice(x: () -> Any?) {
    x(); x();
}

fun main() {
    twice {
        println("Foo")
    } # => Foo
      # => Foo
}