более простой способ преобразовать функцию в лямбду в Kotlin? - PullRequest
0 голосов
/ 24 февраля 2019

Здесь Handler является типом функции.И doSomething - одна из таких функций-обработчиков.addHandler зарегистрировать его и дать ему имя.Вопрос в том, есть ли более простой способ преобразовать функцию doSomething в лямбду?

typealias Handler = (cmd: String, obj: Any?) -> Any?

fun doSomething(cmd: String, obj: Any?): Any? {...}

fun addHandler(name: String, handler: Handler) {...}

fun foo() {
    addHandler("doSomething", { cmd, obj -> doSomething(cmd, obj) })
    // or in other syntax
    addHandler("doSomething") { cmd, obj -> doSomething(cmd, obj) }
}

Здесь фраза

{ cmd, obj -> doSomething(cmd, obj) }

просто конвертирует функцию в лямбду, которая имеет такой же параметрпоследовательность.C ++ имеет очень простой синтаксис и делает что-то для этого.Как насчет Котлина?

1 Ответ

0 голосов
/ 24 февраля 2019

Kotlin также поддерживает ссылки на методы , в вашем случае вы можете сделать это:

addHandler("doSomething", ::doSomething)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...