将 lambda 的所有参数转发给函数

Forward all arguments of lambda to function

我有一个以 lambda 作为参数的函数:

fun blupp(theFun: ((a: Int, b: Int, c: String, d: String) -> Unit)) {
    theFun(1, 2, "three", "four")
}

我实现了一个匹配 lambda 原型的函数:

fun blah(a: Int, b: Int, c: String, d: String) {
    println("a=$a, b=$b, c=$c, d=$d")
}

我可以像这样将 blah 传递给 blupp

fun main() {
    blupp { a, b, c, d -> blah(a, b, c, d) }
}

是否可以将 blah 传递给 blupp 而无需重新声明所有参数?我正在寻找这样的结构:

blupp { blah(it) } // doesn't compile
blupp { blah }     // doesn't compile
blupp(blah)        // doesn't compile

N.B.: 当然我可以将 blah 内联到调用中,但这不是我想要的,因为我也从其他地方调用 blah

您想使用函数引用:

blupp(::blah)

更多关于 official docs