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()
我正在尝试用 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
有什么方法可以解决这个问题,或者在这种情况下我根本无法使用 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()