Kotlin 中的省略号运算符 Java 等价
Ellipsis operator Java equivalence in Kotlin
在 Java 中,可以这样做:void function(Url... urls)
。它使使用 1..n url 成为可能。问题是是否可以用 Kotlin 做同样的事情。
解决方案是 vararg
并且可以迭代参数。
private fun areValidFields(vararg fields: String) : Boolean{
return fields.none { it.isNullOrEmpty() || it.isBlank() }
}
来自 Kotlin 参考资料 (https://kotlinlang.org/docs/reference/functions.html):
Variable number of arguments (Varargs)
A parameter of a function (normally the last one) may be marked with
vararg modifier:
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
}
allowing a variable number of arguments to be passed to the function:
val list = asList(1, 2, 3)
Inside a function a vararg-parameter of type T is visible as an array
of T, i.e. the ts variable in the example above has type Array.
注意与 Java 的区别:在 Java 中,您可以将数组作为单个参数传递,而在 Kotlin 中,您必须显式解压缩数组,以便每个
数组元素成为一个单独的参数。但是您可以通过简单地将 * 字符放在相应的参数之前来实现:
fun main(args: Array<String>) {
val list = listOf("args: ", *args)
println(list)
}
(了解它如何让您在一次调用中组合数组中的值和一些固定值,这在 Java 中是不允许的)。
在 Java 中,可以这样做:void function(Url... urls)
。它使使用 1..n url 成为可能。问题是是否可以用 Kotlin 做同样的事情。
解决方案是 vararg
并且可以迭代参数。
private fun areValidFields(vararg fields: String) : Boolean{
return fields.none { it.isNullOrEmpty() || it.isBlank() }
}
来自 Kotlin 参考资料 (https://kotlinlang.org/docs/reference/functions.html):
Variable number of arguments (Varargs)
A parameter of a function (normally the last one) may be marked with vararg modifier:
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 }
allowing a variable number of arguments to be passed to the function:
val list = asList(1, 2, 3)
Inside a function a vararg-parameter of type T is visible as an array of T, i.e. the ts variable in the example above has type Array.
注意与 Java 的区别:在 Java 中,您可以将数组作为单个参数传递,而在 Kotlin 中,您必须显式解压缩数组,以便每个 数组元素成为一个单独的参数。但是您可以通过简单地将 * 字符放在相应的参数之前来实现:
fun main(args: Array<String>) {
val list = listOf("args: ", *args)
println(list)
}
(了解它如何让您在一次调用中组合数组中的值和一些固定值,这在 Java 中是不允许的)。