Menu
Coddy logo textTech

Variables capturadas

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

Una lambda puede usar variables de su ámbito circundante. Esto se denomina captura. Si cambia una var capturada, una invocación posterior ve su valor actual. Las capturas también permiten que una lambda devuelta conserve el estado entre llamadas.

Dentro de main:

var offset = 2
val addOffset = { n: Int -> n + offset }
offset = 5
println(addOffset(3))

La lambda lee el valor actual de cinco de offset cuando se llama.

Una variable mutable capturada es un estado compartido, no una copia congelada de su valor original.

challenge icon

Desafío

Intermedio

Completa capturedOffset con los parámetros value: Int, offset: Int. Crea una lambda que sume el offset circundante a su argumento entero y, después, aplícala a value.

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 utilizan el formato estándar entre corchetes de Kotlin; no imprimas etiquetas adicionales.

Pruébalo tú mismo

fun capturedOffset(value: Int, offset: Int): Int {
    // Escribe tu solución aquí.
    return 0
}
fun main() {
    val value = readln().toInt()
    val offset = readln().toInt()
    println(capturedOffset(value, offset))
}
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