Menu
Coddy logo textTech

Variabili catturate

Fa parte della sezione Logica e flusso del percorso Kotlin di Coddy. Lezione 29 di 63.

Una lambda può usare variabili dell'ambito circostante. Questo si chiama cattura. Se una var catturata cambia, un'invocazione successiva ne vede il valore corrente. Le catture permettono anche a una lambda restituita di mantenere lo stato tra una chiamata e l'altra.

All'interno di main:

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

La lambda legge il valore corrente di offset, pari a cinque, quando viene chiamata.

Una variabile mutabile catturata è uno stato condiviso, non una copia congelata del suo valore originale.

challenge icon

Sfida

Medio

Completa capturedOffset con i parametri value: Int, offset: Int. Crea una lambda che aggiunga l'offset circostante al suo argomento intero, quindi applicala a value.

Salvo indicazioni più restrittive riportate sopra, le collezioni contengono al massimo 100 elementi a ogni livello e gli argomenti interi e i valori interi delle collezioni sono compresi tra -1000 e 1000. Il testo fornito per l'analisi può includere rappresentazioni non valide o fuori intervallo, come descritto.

Restituisci un valore di tipo Int. Mantieni il codice di input/output fornito. Legge gli argomenti scalari uno per riga; un elenco inizia con il suo conteggio seguito dai suoi elementi e una mappa inizia con il conteggio delle sue voci seguito da ogni chiave e valore. Gli elenchi annidati ripetono il formato conteggio ed elementi per ogni riga. Il main fornito stampa il valore restituito seguito da un carattere di nuova riga. Gli elenchi usano il formato standard tra parentesi quadre di Kotlin; non stampare etichette aggiuntive.

Provalo tu

fun capturedOffset(value: Int, offset: Int): Int {
    // Scrivi qui la tua soluzione.
    return 0
}
fun main() {
    val value = readln().toInt()
    val offset = readln().toInt()
    println(capturedOffset(value, offset))
}
quiz iconMettiti alla prova

Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.

Tutte le lezioni di Logica e flusso

Esercitati da solo: Playground Kotlin