参数数量未知的 Android Kotlin 回调

标签 android kotlin callback

我正在创建一个这样的函数:

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/

相关文章:

android - 当用户使用Geoloqi API进入某个区域时如何通知用户?

android - 在 Android 上的 Instant App 上使用 Firebase

php - Array_Map 使用多个 native 回调?

c - Libcurl:为什么 curl_easy_setopt(curl_handle, CURLOPT_WRITEDATA, obj) 传递我的 writefunction 指针,它不等于 obj?

javascript - Mongoose 将 If 添加到中间件

java - 如何在不使布局可滚动的情况下使 2 个 TextViews 可滚动?

android - 从 SD 卡和图库中删除图像

android - 如何使用 Dagger 2.11 注入(inject)模拟

spring - ConfigurationProperties 从 YML 加载列表

android - 确保从协程返回的值覆盖 android kotlin 中的默认值