En este tutorial te mostraremos como declarar funciones con argumentos variables en Kotlin, de tal manera que puedas aceptar un número ilimitado de valores en la llamada.
Sintaxis Con Argumentos Variables
Habrá momentos donde requieras crear funciones que reciban n cantidad de argumentos del mismo tipo. Ya sea porque deseas permitir valores ilimitados o porque no conozcas la cantidad exacta de argumentos.
Es allí donde la sintaxis de argumentos variables entra para proveerte la solución.
fun nombreFuncion(vararg parametro:Tipo){
/*...*/
}
Aplica el modificador vararg
al parámetro que desees para que acepte un número variable de valores.
Ejemplo De Argumentos Variables En Kotlin
Crear una función que determinar cuántos caracteres tiene la palabra más larga entre una lista de n elementos.
fun maxLength(vararg words: String): Int {
var max = 0
for (word in words) {
if (word.length > max) {
max = word.length
}
}
return max
}
La solución consiste en usar vararg
sobre un parámetro de tipo String
. Luego a través de un bucle for podemos determinar cuál entre todos tiene el mayor número de caracteres (length
).
Luego puedes imprimir una llamada de maxLength()
en la función main()
. Por ejemplo, si usas 4 palabras como sigue:
fun main() {
val max = maxLength("Carro", "Manzana", "Bosque", "Avión")
print("La palabra más larga tiene $max caracteres")
}
El resultado será:
La palabra más larga tiene 7 caracteres
Así mismo podrías invocar la función con los argumentos que necesites:
maxLength()
maxLength("Uno")
maxLength("Uno", "Dos")
maxLength("Uno", "Dos", "Tres")
/*...*/
Internamente el parámetro names
es tratado como un array de strings, por lo que podemos iterar sobre sus elementos o usar funciones miembro de la librería estándar sobre el.
Por otro lado, solo puedes tener un solo parámetro con argumentos variables en una función. Si intentas agregar más el compilador te marcará error.
El Operador Spread
En el ejemplo anterior pasamos las palabras una a una en la llamada de la función.
Si quisieras pasar la referencia del arreglo declarado previamente, usa el operador spread, es decir, usar como prefijo el símbolo *
sobre él argumento.
Modificando la llamada en main()
tendrías:
fun main() {
// Ejemplo operador spread
val words = arrayOf("Carro", "Manzana", "Bosque", "Avión")
print("La palabra más larga tiene ${maxLength(*words)} caracteres")
}
¿Qué Sigue?
En este tutorial viste como crear funciones con argumentos variables en Kotlin y como usar el operador spread. En la siguiente sección aprenderás sobre el alcance de funciones .
Únete Al Discord De Develou
Si tienes problemas con el código de este tutorial, preguntas, recomendaciones o solo deseas discutir sobre desarrollo Android conmigo y otros desarrolladores, únete a la comunidad de Discord de Develou y siéntete libre de participar como gustes. ¡Te espero!