class - 多参数构造函数的回调

标签 class parameters constructor callback kotlin

到目前为止,我尝试过的是使用单个参数的回调并且它有效:

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/

相关文章:

C++ 如何在数组中存储对象而不删除它们

python - 捕获内置异常(而不是自定义异常)

Python 字典带有作为参数传递的数组值?

java - 如何使构造函数中定义的对象对类的其余部分可见

exception - 构造函数什么时候抛出异常是正确的?

java - Eclipse错误: <class name> cannot be resolved to a type

python - 扩展 python 内置类 : float

c# - 委托(delegate)参数中的 Co(ntra) 方差

jsf - 将参数传递给 JSF 中的 View 作用域 bean

c++ - 如何从用花括号初始化的对象中捕获异常抛出?