19 - Funciones: llamada a la función con argumentos nombrados

Esta característica de Kotlin nos permite llamar a la función indicando en cualquier orden los parámetros de la misma, pero debemos especificar en la llamada el nombre del parámetro y el valor a enviarle.

Problema 1

Confeccionar una función que reciba el nombre de un operario, el pago por hora y la cantidad de horas trabajadas. Debe mostrar su sueldo y el nombre. Hacer la llamada de la función mediante argumentos nombrados.

Proyecto94 - Principal.kt

fun calcularSueldo(nombre: String, costoHora: Double, cantidadHoras: Int) {
    val sueldo = costoHora * cantidadHoras
    println("$nombre trabajó $cantidadHoras horas, se le paga por hora $costoHora por lo tanto le corresponde un sueldo de $sueldo")
}

fun main(parametro: Array<String>) {
    calcularSueldo("juan", 10.5, 120)
    calcularSueldo(costoHora = 12.0, cantidadHoras = 40, nombre="ana")
    calcularSueldo(cantidadHoras = 90, nombre = "luis", costoHora = 7.25)
}

Como podemos ver no hay ningún cambio cuando definimos la función:

fun calcularSueldo(nombre: String, costoHora: Double, cantidadHoras: Int) {
    val sueldo = costoHora * cantidadHoras
    println("$nombre trabajó $cantidadHoras horas, se le paga por hora $costoHora por lo tanto le corresponde un sueldo de $sueldo")
}

Podemos llamarla como ya conocemos indicando los valores directamente:

    calcularSueldo("juan", 10.5, 120)

Pero también podemos indicar los datos en cualquier orden pero con la obligación de anteceder el nombre del parámetro:

    calcularSueldo(costoHora = 12.0, cantidadHoras = 40, nombre="ana")
    calcularSueldo(cantidadHoras = 90, nombre = "luis", costoHora = 7.25)

Problema propuesto

  • Elaborar una función que muestre la tabla de multiplicar del valor que le enviemos como parámetro. Definir un segundo parámetro llamado termino que por defecto almacene el valor 10. Se deben mostrar tantos términos de la tabla de multiplicar como lo indica el segundo parámetro.
    Llamar a la función desde la main con argumentos nombrados.
Solución
Proyecto95

fun tabla(numero: Int, terminos: Int = 10) {
    for(i in numero..numero*terminos step numero)
        println(i)
}

fun main(parametro: Array<String>) {
    println("Tabla del 3")
    tabla(3)
    println("Tabla del 3 con 5 terminos")
    tabla(3, 5)
    println("Tabla del 3 con 20 terminos")
    tabla(terminos = 20, numero = 3)
}