2017-10-09 95 views
1
什么

我试过到目前为止回调与单一的参数,它的工作原理:回调与多个参数构造器

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) { 
     // ... 
    } 
} 

回答

1

刚使用lambda expression syntax有明确参数:

val something = SomeClass { num, str -> onSomething(num, str) } 

时,顺便林bda作为最后一个参数,可以省略括号。

此外,您还可以使用bound function reference如果预期和实际功能的签名完全匹配:

val something = SomeClass(this::onSomething)