到目前为止,我尝试过的是使用单个参数的回调并且它有效:
class SomeClass (something:Int = 3, val callback: (Int) -> Unit) {
fun doSomething() {
callback(11)
}
}
class AnotherClass {
val something = SomeClass({onSomething(it)})
protected fun onSomething(num: Int) {
// ...
}
}
但是如何使用多个参数来实现它,例如:
class SomeClass (something:Int = 3, val callback: (Int, String) -> Unit) {
fun doSomething() {
callback(11, "Yeah")
}
}
class AnotherClass {
val something = SomeClass(/* ...... what goes here???? */)
protected fun onSomething(num: Int, str: String) {
// ...
}
}
最佳答案
只需使用 lambda expression syntax带有显式参数:
val something = SomeClass { num, str -> onSomething(num, str) }
将 lambda 作为最后一个参数传递时,可以省略括号。
此外,您可以使用 bound function reference当预期的和实际的函数签名完全匹配时:
val something = SomeClass(this::onSomething)
关于class - 多参数构造函数的回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46656054/