如何调整我的 Kotlin 高阶函数以获取参数?

How can I adapt my Kotlin Higher-Order function to take a parameter?

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.controlButtonAnko 视图中的调用以接受参数?

编辑:

好的,我可以这样做:

fun ViewManager.controlButton(body: (myInt: Int) -> Unit) = frameLayout {
...
}

但是如何从 Anko 视图调用它?

要接受一个(Int) -> Unit函数,你只需要在controlButton参数中的函数类型中添加Int参数:

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)