0Pricing
Android Academy · Lezione

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 user

Un 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

  1. Tipi nullable e non-null a confronto
  2. Chiamate sicure ed Elvis
  3. let, also e funzioni di scope
  4. Evitare le NullPointerException
← Torna a Android Academy