我正在创建一个这样的函数:
fun someFunction(
callBack: () -> Unit
){
callback.invoke()
}
当我使用该功能时:
someFunction(
callBack = callBackFun()
)
所以问题是,因为我不知道 callBackFun() 将有多少个参数(可以是 0 或多个),因为 someFunction 可以在多种情况下使用。我如何创建带有 0 个或多个参数的回调(vararg 在这种情况下不起作用)
最佳答案
将 callBackFun()
放在两个花括号 {}
内,您将能够传递具有不同参数的任何函数:
someFunction(
callBack = { callBackFun() }
)
someFunction(
callBack = { secondCallBackFun(arg1, arg2) }
)
someFunction(
callBack = { thirdCallBackFun(arg1, arg2, arg3) }
)
您甚至可以传递多个函数并在 lambda 中编写您想要的任何逻辑,就像任何其他函数一样:
someFunction(
callBack = {
val arg1 = "test"
val arg2 = "test2"
val arg3 = 21
callBackFun()
secondCallBackFun(arg1, arg2)
thirdCallBackFun(arg1, arg2, arg3)
}
)
但是 callBack lambda 函数参数应该是已知的,您将其类型设置为:() -> Unit
,因此它不接受任何参数。
关于参数数量未知的 Android Kotlin 回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74628024/