功能採取其他功能

如“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
}