kotlin 中的可变参数和扩展函数

vararg and extension function in kotlin

我正在尝试用 kotlin 编写扩展函数。我几乎走到了尽头,但一件简单的事情阻止了我。代码如下:

fun Bundle.applyWithUserParameters(vararg functionList: () -> Unit = null): Bundle = Bundle().apply {
for (method in functionList)
    method()
FirebaseAnalyticsHelper.clientRepository.getClientData()?.clientID?.let {
    putInt(
        FirebaseAnalyticsHelper.KEY_USER_ID, it
    )
}
}

null 有下划线,表示:“Null 不能是非空类型 Array Unit> 的值”

有什么方法可以解决这个问题,或者在这种情况下我根本无法使用 vararg? 谢谢

您似乎试图将 varargs 参数的默认值设置为 null。这不是必需的。 Varargs 可以接受 0 个参数,即使没有默认值。

fun Bundle.applyWithUserParameters(vararg functionList: () -> Unit): Bundle = 
    Bundle().apply {
        for (method in functionList)
            method()
        FirebaseAnalyticsHelper.clientRepository.getClientData()?.clientID?.let {
            putInt(
                FirebaseAnalyticsHelper.KEY_USER_ID, it
            )
       }
    }

这个有效:

someBundle.applyWithUserParameters()