在Kotlin中的省略运算符Java等价

Jul*_*osa 2 java ellipsis variadic-functions kotlin

在Java中,可以执行以下操作:void function(Url... urls).它可以使用1..n网址.问题是,是否有可能与Kotlin做同样的事情.

Jul*_*osa 6

解决方案是,vararg并且可以迭代参数.

private fun areValidFields(vararg fields: String) : Boolean{
    return fields.none { it.isNullOrEmpty() || it.isBlank() }
}
Run Code Online (Sandbox Code Playgroud)


Eke*_*eko 5

来自 Kotlin 参考(https://kotlinlang.org/docs/reference/functions.html):

可变数量的参数 (Varargs)

函数的参数(通常是最后一个)可以用 vararg 修饰符标记:

fun <T> asList(vararg ts: T): List<T> {
    val result = ArrayList<T>()
    for (t in ts) // ts is an Array
        result.add(t)
    return result
}
Run Code Online (Sandbox Code Playgroud)

允许将可变数量的参数传递给函数:

val list = asList(1, 2, 3)
Run Code Online (Sandbox Code Playgroud)

在函数内部,T 类型的 vararg 参数作为 T 数组可见,即上例中的 ts 变量具有 Array 类型。

注意与 Java 的区别:在 Java 中,您可以将数组作为单个参数传递,而在 Kotlin 中,您必须显式地解压缩数组,以便每个数组元素都成为一个单独的参数。但是您可以通过简单地将 * 字符放在相应的参数之前来实现:

fun main(args: Array<String>) {
    val list = listOf("args: ", *args)
    println(list)
}
Run Code Online (Sandbox Code Playgroud)

(看看它如何让您在一次调用中组合数组中的值和一些固定值,这在 Java 中是不允许的)。