在Kotlin中将函数转换为lambda的更简单方法?

时间:2019-02-24 09:09:43

标签: kotlin

在这里,Handler是一种函数类型。 doSomething就是这样的处理函数之一。 addHandler注册它并为其命名。 问题是将函数doSomething转换为lambda的方法是否更简单?

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) }

只是将一个函数转换为具有相同参数序列的lambda。 C ++具有非常简单的语法&doSomething。在科特林怎么样?

1 个答案:

答案 0 :(得分:4)

Kotlin还支持method references,您可以这样做:

addHandler("doSomething", ::doSomething)