将 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
我有一个以 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