在 Kotlin 中,当将参数传递给 varargs 参数时,默认情况下是无法过滤出 null 参数的。varargs 参数实际上被编译为数组,而数组在 Kotlin 中是不允许包含 null 值的。因此,如果你将 null 值传递给 varargs 参数,编译器会在编译时产生一个警告,但不会过滤掉这个 null 值。
然而,你可以使用 Kotlin 的可变长度参数限定符 spread operator (*)
来实现过滤 null 参数的效果。通过在传递参数前添加 *
,可以将一个数组解构为一个可变长度的参数序列,并且在解构过程中会过滤掉数组中的 null 值。
下面是一个示例代码:
fun printParams(vararg params: String?) {
params.filterNotNull().forEach { println(it) }
}
fun main() {
val param1 = "Hello"
val param2 = null
val param3 = "World"
printParams(*arrayOf(param1, param2, param3))
}
在上述示例中,我们定义了一个 printParams
函数来打印参数。在 printParams
函数中,我们使用了 filterNotNull()
函数来过滤掉参数中的 null 值。然后,我们使用 forEach
循环打印过滤后的参数。
在 main
函数中,我们创建了一个包含 null 值的参数数组,并将其传递给 printParams
函数。在传递参数之前,我们使用了 *
可变长度参数限定符来解构数组,并在解构过程中过滤掉 null 值。
这样,只有非空参数 "Hello" 和 "World" 会被打印出来。
腾讯云相关产品和产品介绍链接地址:
领取专属 10元无门槛券
手把手带您无忧上云