18 - Funciones: con parámetros con valor por defecto

En Kotlin se pueden definir parámetros y asignarles un dato en la misma cabecera de la función. Luego cuando llamamos a la función podemos o no enviarle un valor al parámetro.

Los parámetros por defecto nos permiten crear funciones más flexibles y que se pueden emplear en distintas circunstancias.

Problema 1

Confeccionar una función que reciba un String como parámetro y en forma opcional un segundo String con un caracter. La función debe mostrar el String subrayado con el caracter que indica el segundo parámetro

Proyecto92 - Principal.kt

fun tituloSubrayado(titulo: String, caracter: String = "*") {
    println(titulo)
    for(i in 1..titulo.length)
        print(caracter)
    println()
}

fun main(parametro: Array<String>) {
    tituloSubrayado("Sistema de Administracion")
    tituloSubrayado("Ventas", "-")
}

Cuando ejecutamos esta aplicación podemos observar el siguiente resultado:

funciones con parámetros con valor por defecto

Lo primero importante en notar que la llamada a la función tituloSubrayado la podemos hacer enviándole un dato o dos datos:

    tituloSubrayado("Sistema de Administracion")
    tituloSubrayado("Ventas", "-")

Esto no podría ser correcto si no utilizamos una sintaxis especial cuando declaramos los parámetros de la función:

fun tituloSubrayado(titulo: String, caracter: String = "*") {
    println(titulo)
    for(i in 1..titulo.length)
        print(caracter)
    println()
}

Como vemos el parámetro caracter tiene una asignación de un valor por defecto para los casos que llamamos a la función con un solo parámetro.

Cuando la llamamos a la función tituloSubrayado con un solo parámetro luego el parámetro caracter almacena el valor "*". Si llamamos a la función y le pasamos dos parámetros en nuestro ejemplo el parámetro caracter almacena el string "-"

El algoritmo de la función imprimir el primer parámetro y mediante un for que se repite tantas veces como el largo del "titulo" imprimimos el segundo parámetro

Problema propuesto

  • Confeccionar una función que reciba entre 2 y 5 enteros. La misma nos debe retornar la suma de dichos valores. Debe tener tres parámetros por defecto.
Solución
Proyecto93

fun sumar(v1: Int, v2: Int, v3: Int = 0, v4: Int = 0, v5: Int = 0) = v1 + v2 + v3 + v4 + v5

fun main(parametro: Array<String>) {
    println("La suma de 5 + 6 es ${sumar(5,6)}")
    println("La suma de 1 + 2 + 3 es ${sumar(1,2,3)}")
    print("La suma de 1 + 2 + 3 + 4 + 5 es ${sumar(1,2,3,4,5)}")
}