let, also e funzioni di scope
Lavori con valori nullable.
let, also e funzioni di scope è una lezione Android Academy gratuita su CoddyKit. Questa è la lezione 3 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Android Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Android Academy include 4 lezioni in totale.
Che cosa sono le scope function
Le scope function consentono di eseguire un blocco di codice nel contesto di un oggetto. Rendono il codice più conciso, soprattutto quando si lavora con valori nullable.
Questa lezione si concentra su let e also, le due più utili per la null safety, e sul loro rapporto con l'operatore safe call.
La funzione let
let esegue un blocco e passa l'oggetto come it. Restituisce qualunque valore venga restituito dal blocco.
È utile per trasformare un valore o assegnare un nome temporaneo all'interno di uno scope.
fun main() {
val length = "Kotlin".let { it.length }
println(length) // prints: 6
}let per la null safety
Combini ?. con let per eseguire un blocco solo quando un valore non è null. Il blocco viene eseguito una volta, con il valore disponibile come it.
Se il valore è null, il blocco viene completamente ignorato.
fun main() {
val name: String? = "Ada"
name?.let {
println("Hello, " + it)
}
}Ignorato quando è null
Quando il ricevitore è null, ?.let non fa nulla. Il blocco non viene mai eseguito.
Questo programma non stampa nulla perché name è null.
fun main() {
val name: String? = null
name?.let {
println("Hello, " + it)
}
}Rinominare it
È possibile assegnare al parametro un nome più chiaro invece di it. Questo migliora la leggibilità nei blocchi più lunghi.
Usi una freccia per assegnargli esplicitamente un nome.
val name: String? = "Bo"
name?.let { value ->
println(value.uppercase())
}La funzione also
also passa anch'essa l'oggetto come it, ma restituisce l'oggetto originale invece del risultato del blocco.
È ideale per effetti collaterali come la registrazione dei log, mantenendo invariato il valore all'interno di una catena.
fun main() {
val n = 5.also { println("got " + it) }
println(n) // prints: 5
}Valore restituito da let e also
La differenza fondamentale è questa: let restituisce il risultato del blocco, mentre also restituisce l'oggetto originale.
Scelga let per trasformare un valore e also per osservarlo senza modificarlo.
val a = "hi".let { it.length } // a = 2 (Int)
val b = "hi".also { it.length } // b = "hi" (String)also per la registrazione dei log
Poiché also restituisce l'oggetto, può essere inserito in una catena per ispezionare un valore durante il flusso.
Qui registriamo un valore nullable solo se è presente, poi continuiamo a utilizzarlo.
fun main() {
val token: String? = "abc"
val result = token?.also { println("token: " + it) }
println(result)
}let con Elvis
Abbini ?.let all'operatore Elvis per fornire un'alternativa quando il valore è null.
Il blocco produce un risultato quando il valore è presente; il ramo Elvis gestisce il caso null.
fun main() {
val raw: String? = null
val out = raw?.let { it.trim() } ?: "empty"
println(out) // prints: empty
}Scegliere una scope function
Per la null safety, scelga let quando desidera trasformare o usare un valore non null all'interno di un blocco. Scelga also quando desidera un effetto collaterale ma deve mantenere l'oggetto originale.
Entrambe si combinano naturalmente con l'operatore safe call per evitare crash dovuti a valori null.
user?.let { save(it) } // transform/use
user?.also { log(it) } // side effect, keep userUn esempio combinato
Questo programma usa ?.let per costruire un messaggio ed Elvis come fallback. Mostra il normale approccio quotidiano alla null safety in Kotlin.
Non sono presenti controlli espliciti dei valori null, eppure il codice è completamente sicuro.
fun main() {
val city: String? = "Goreme"
val label = city?.let { "City: " + it } ?: "Unknown"
println(label)
}Verifica rapida
Verifichi la comprensione di let e also.
Riepilogo
Le scope function eseguono un blocco nel contesto di un oggetto. let passa l'oggetto come it e restituisce il risultato del blocco; also passa it e restituisce l'oggetto originale.
Con ?.let è possibile agire su un valore solo quando non è null. Nella prossima lezione riunirà questi concetti per evitare completamente le NullPointerException.
Domande Frequenti
La lezione «let, also e funzioni di scope» è gratuita?
Sì — il testo completo di «let, also e funzioni di scope» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Android Academy, passa a CoddyKit PRO. Il corso Android Academy include 4 lezioni in totale.
Cosa imparerò in «let, also e funzioni di scope»?
Lavori con valori nullable. Eserciti Android Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare Android Academy?
Non è richiesta alcuna esperienza precedente. Android Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 3 di 4.
Quanto tempo richiede la lezione «let, also e funzioni di scope»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione Android Academy?
Sì. Ogni lezione Android Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- Tipi nullable e non-null a confronto
- Chiamate sicure ed Elvis
- let, also e funzioni di scope
- Evitare le NullPointerException