Menu
Coddy logo textTech

Pasar funciones

Parte de la sección Lógica y flujo del Journey de Kotlin de Coddy. Lección 28 de 63.

Una función de orden superior acepta un valor de función o devuelve uno. Declara un parámetro de función con un tipo de función y después llámalo dentro de la función auxiliar. Si el argumento final es una lambda, Kotlin te permite colocar sus llaves después de los paréntesis de la llamada.

fun applyTwice(n: Int, operation: (Int) -> Int): Int {
    return operation(operation(n))
}

Dentro de main:

println(applyTwice(2) { it + 3 })

La primera llamada cambia dos a cinco; la segunda cambia cinco a ocho.

Un parámetro de función puede llamarse repetidamente con resultados intermedios.

challenge icon

Desafío

Intermedio

Completa twiceDouble con el parámetro value: Int. Usa el asistente applyTwice proporcionado y una lambda de duplicación. Devuelve el resultado después de aplicar la operación de duplicación dos veces.

A menos que se indiquen límites más estrictos arriba, las colecciones contienen como máximo 100 elementos en cada nivel, y los argumentos enteros y los valores enteros de las colecciones están entre -1000 y 1000. El texto proporcionado para el análisis puede incluir representaciones no válidas o fuera de rango, tal como se describe.

Devuelve un valor de tipo Int. Conserva el código de entrada/salida proporcionado. Lee los argumentos escalares, uno por línea; una lista comienza con su cantidad, seguida de sus elementos, y un mapa comienza con su cantidad de entradas, seguida de cada clave y valor. Las listas anidadas repiten el formato de cantidad y elementos para cada fila. El main proporcionado imprime el valor devuelto seguido de un salto de línea. Las listas usan el formato estándar entre corchetes de Kotlin; no imprimas etiquetas adicionales.

Pruébalo tú mismo

fun applyTwice(n: Int, operation: (Int) -> Int): Int {
    return operation(operation(n))
}
fun twiceDouble(value: Int): Int {
    // Escribe tu solución aquí.
    return 0
}
fun main() {
    val value = readln().toInt()
    println(twiceDouble(value))
}
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 Lógica y flujo

Practica por tu cuenta: Playground de Kotlin