0

我正在尝试在 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 不能是非 null 类型 Array<out () -> Unit> 的值”

有没有办法解决这个问题,或者在这种情况下我根本无法使用 vararg?谢谢

4

1 回答 1

3

您似乎正在尝试将 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()
于 2021-09-29T09:42:20.713 回答