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.
Sfida
MedioCompleta 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))
}Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.
Tutte le lezioni di Logica e flusso
1Mappe Parte 1
Creare mappeConsultare le mappe in modo sicuroAggiornare le mappeControllare le chiaviRiepilogo - Banco di borsa4Collezioni annidate
Liste di listeAttraversare le righeRiepiloghi delle righeAppiattire liste annidateRipasso - File di posti a sedere7Pipeline di collezioni
Trasformare con MapFiltrare i valoriVerificare le regole della collezioneAccumulare con FoldRiepilogo - Totali approvati2Mappe Parte 2
Iterare sulle voci delle mappeChiavi e valoriMappe di frequenzaMappe annidateRiepilogo - Report delle frequenze5Progetto - Rubrica
Salva contattiTrova contatti3Insiemi e appartenenza
Creare insiemiAggiornare gli insiemiOperazioni sugli insiemiVerificare i sottoinsiemiRiepilogo - Ospiti dell'evento6Valori delle funzioni
Scrivere funzioni lambdaTipi di funzionePassare funzioniVariabili catturateRiepilogo - Punteggio configurabileEsercitati da solo: Playground Kotlin