gpt4 book ai didi

javascript - kotlin中如何传递带有参数的函数引用?类似于javascript中的bind()

转载 作者:行者123 更新时间:2023-12-02 23:17:30 25 4
gpt4 key购买 nike

编辑开始:

您可以在 repl 中尝试下面的两个代码片段,看看我想要什么。

Kotlin 代码(不起作用,在 onComplete 函数调用中要求参数)

fun toPass(name: String, age: Int) {
println("Name is $name and age is $age")
}

toPass("Hakan", 26)

fun test(title: String, onComplete: (String, Int) -> Unit) {
println("from test")
onComplete()
println("from test END")
}

test("customTitle", toPass("Emre", 32))

Javascript 代码(有效)

function toPass(name, age) {
console.log(`Name is ${name} and age is ${age}`)
}

toPass("Hakan", 26)

function test(title, onComplete) {
console.log("from test")
onComplete()
console.log("from test END")
}

test("customTitle", toPass.bind("Emre", 32))

编辑结束

////////////////////////////////////////////////////////////////////////////////////////////////

我想将一个函数作为 onComplete 回调传递给另一个函数。

原因是回调将以本地范围的引用作为参数。所以我想利用这里的闭包来解决我的问题。就像 JavaScript 中一样。

我想将一些参数绑定(bind)到我传递的函数。

fun functionToPass(name: String, age: Int){

}

fun someProcess(title: String, onComplete: (String, Int) -> Unit){
var builder = AlertDialog.Builder()
...
.setPositiveButton(android.R.string.ok, object: DialogInterface.OnClickListener{
override fun onClick(dialog: DialogInterface?, which: Int) {
onComplete()
}
})
...
...
builder.create().show()
}

我想做下面的事情,我将下面的代码编写为 javascript,它将值绑定(bind)到“name”和“age”参数

someProcess("MyTitle", functionToPass.bind("Hakan", 26))

我怎样才能在 kotlin 中做同样的事情?我只知道如何发送引用,但我想绑定(bind)值以使用闭包,这样我就可以更轻松地编写代码逻辑。

谢谢

我已经检查了 Kotlin 文档,但它只显示了如何传递引用,没有显示在传递引用时将值绑定(bind)到参数的示例。

最佳答案

我不确定我是否真的理解这个问题,但我认为你可以这样做:

fun functionToPass(name: String, age: Int) { … }

fun someProcess(title: String, onComplete: () -> Unit) {

onComplete()

}

你可以这样调用它:

someProcess("MyTitle") { functionToPass("Hakan", 26) }

关于javascript - kotlin中如何传递带有参数的函数引用?类似于javascript中的bind(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57108236/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com