Menu
Coddy logo textTech

Argumentos con nombre

Parte de la sección Fundamentos del Journey de Kotlin de Coddy. Lección 58 de 93.

Al llamar a una función con varios parámetros, normalmente pasas los argumentos exactamente en el orden en que están definidos. Pero Kotlin ofrece una alternativa más clara: argumentos con nombre.

Con los argumentos con nombre, especificas a qué parámetro pertenece cada valor usando el nombre del parámetro seguido de =:

fun createProfile(name: String, age: Int, city: String) {
    println("$name, $age, from $city")
}

fun main() {
    createProfile(name = "Alice", age = 25, city = "Paris")
}
// Salida: Alice, 25, de París

Esto hace que tu código sea más legible, especialmente cuando una función tiene varios parámetros del mismo tipo. Compara estas dos llamadas:

// Sin argumentos con nombre - ¿qué significan estos números?
calculateArea(10, 5, 3)

// Con argumentos con nombre - ¡mucho más claro!
calculateArea(length = 10, width = 5, height = 3)

Los argumentos con nombre también te permiten pasar valores en el orden que prefieras:

fun greet(firstName: String, lastName: String) {
    println("Hello, $firstName $lastName!")
}

fun main() {
    greet(lastName = "Smith", firstName = "John")
}
// Salida: Hello, John Smith!

Puedes mezclar argumentos posicionales y con nombre, pero una vez que uses un argumento con nombre, todos los argumentos siguientes también deberían tener nombre para evitar confusiones.

challenge icon

Desafío

Intermedio

Se te proporciona la siguiente función:

fun formatBook(title: String, author: String, year: Int) {
    println("\"$title\" by $author ($year)")
}

Lee tres entradas: el título de un libro (String), el nombre de un autor (String) y el año de publicación (Int).

Llama a la función formatBook usando argumentos con nombre en este orden específico: year, title, author.

Por ejemplo, si las entradas son:

1984
George Orwell
1949

La salida debe ser:

"1984" by George Orwell (1949)

Pruébalo tú mismo

fun formatBook(title: String, author: String, year: Int) {
    println("\"$title\" by $author ($year)")
}

fun main() {
    val title = readLine()!!
    val author = readLine()!!
    val year = readLine()!!.toInt()
    
    // TODO: Llama a formatBook usando argumentos nombrados en este orden: year, title, author
    
}
quiz iconPonte a prueba

Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.

Todas las lecciones de Fundamentos

Practica por tu cuenta: Playground de Kotlin