Переслать все аргументы лямбда-функции в функцию - PullRequest
0 голосов
/ 29 февраля 2020

У меня есть функция, которая принимает лямбду в качестве аргумента:

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

Я реализовал функцию, которая соответствует прототипу лямбды:

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

Примечание: конечно, я мог бы просто вставить blah в вызов, но это не то, что я хочу, потому что я звоню blah из других мест. а также.

1 Ответ

2 голосов
/ 29 февраля 2020

Вы хотите использовать ссылку на функцию:

blupp(::blah)

Подробнее о официальных документах

...