Funciones Con Argumentos Variables En Kotlin

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.

Multiple vararg-parameters are prohibited

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!