In Java, it is possible to do something like this: void function(Url... urls)
. It makes possible to use 1..n urls. The question is if it is possible to do the same thing with Kotlin.
From the Kotlin reference (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.
Beware of a difference with Java: in Java you can pass an array as single parameter, while in Kotlin you must explicitly unpack the array, so that every array element becomes a separate argument. But you can do it by simply putting the * character before the corresponding argument:
fun main(args: Array<String>) {
val list = listOf("args: ", *args)
println(list)
}
(See how it lets you combine the values from an array and some fixed values in a single call, which is not allowed in Java).
The solution is with vararg
and the it is possible to iterate over the parameter.
private fun areValidFields(vararg fields: String) : Boolean{
return fields.none { it.isNullOrEmpty() || it.isBlank() }
}
From the Kotlin reference (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.
Beware of a difference with Java: in Java you can pass an array as single parameter, while in Kotlin you must explicitly unpack the array, so that every array element becomes a separate argument. But you can do it by simply putting the * character before the corresponding argument:
fun main(args: Array<String>) {
val list = listOf("args: ", *args)
println(list)
}
(See how it lets you combine the values from an array and some fixed values in a single call, which is not allowed in Java).
© 2022 - 2024 — McMap. All rights reserved.