在Kotlin
我有以下内容:
fun ViewManager.controlButton(body: () -> Unit) = frameLayout {
...
}
private fun captureAndInsert() {
println("captureAndInsert is called!")
}
在Anko
视图中:
controlButton(this@MemoryFragmentUi::captureAndInsert)
这工作正常。
现在我需要将一个参数传递给captureAndInsert
,使其如下所示:
private fun captureAndInsert(myInt: Int) {
println("captureAndInsert is called!")
}
如何调整ViewManager.controlButton
和Anko
视图中的调用以接受参数?
编辑:
好的,所以我可以这样做:
fun ViewManager.controlButton(body: (myInt: Int) -> Unit) = frameLayout {
...
}
但是,从Anko
的角度来看,我该如何称呼它呢?
要接受(Int) -> Unit
函数,您只需将Int
参数添加到controlButton
参数中的函数类型中:
fun ViewManager.controlButton(body: (Int) -> Unit) = frameLayout {
...
}
body
的调用发生在 controlButton
内部,所以还需要将 lambda 的参数传递给 controlButton
的参数列表:
fun ViewManager.controlButton(body: (Int) -> Unit, v: Int) = frameLayout {
body(v)
}
//call
controlButton(this@MemoryFragmentUi::captureAndInsert, 5)