【问题标题】:Forward all arguments of lambda to function将 lambda 的所有参数转发给函数
【发布时间】:2020-02-29 17:13:04
【问题描述】:

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

【问题讨论】:

    标签: kotlin lambda arguments simplify


    【解决方案1】:

    你想使用函数引用:

    blupp(::blah)
    

    更多关于official docs

    【讨论】:

    • 太棒了,我一直在找这个,但找不到!
    猜你喜欢
    • 2016-06-10
    • 2017-12-30
    • 1970-01-01
    • 2017-01-07
    • 2015-11-08
    • 2011-04-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多