Chiamate sicure ed Elvis
Gli operatori ?. e ?:.
Chiamate sicure ed Elvis è una lezione Android Academy gratuita su CoddyKit. Questa è la lezione 2 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.
Oltre i controlli if
Verificare ogni valore nullable con un if funziona, ma il codice diventa presto verboso. Kotlin offre operatori compatti pensati per la gestione dei valori null.
Questa lezione tratta l'operatore di chiamata sicura ?. e l'operatore Elvis ?:, due strumenti che utilizzerà continuamente.
L'operatore di chiamata sicura
L'operatore ?. chiama un metodo solo se il valore non è null. Se è null, l'intera espressione restituisce null invece di causare un arresto anomalo.
È una scorciatoia sicura per il modello if-not-null.
fun main() {
val name: String? = "Coddy"
println(name?.length)
}Chiamata sicura su null
Quando il ricevitore è null, la chiamata sicura si interrompe e restituisce null. Non viene generata alcuna eccezione.
Qui il risultato stampato è la parola null, non un arresto anomalo.
fun main() {
val name: String? = null
println(name?.length) // prints: null
}Concatenare chiamate sicure
Può concatenare ?. attraverso diversi passaggi. Se un collegamento è null, l'intera catena si interrompe e restituisce null.
È perfetto per attraversare dati opzionali annidati.
class Address(val city: String?)
class User(val address: Address?)
fun cityOf(u: User?): String? {
return u?.address?.city
}L'operatore Elvis
L'operatore Elvis ?: fornisce un valore alternativo quando il lato sinistro è null. Prende il nome dall'acconciatura del cantante, a cui assomiglia il simbolo.
Lo si può leggere così: utilizza il valore a sinistra oppure, in caso contrario, quello a destra.
fun main() {
val name: String? = null
val shown = name ?: "Guest"
println(shown) // prints: Guest
}Elvis con chiamate sicure
La chiamata sicura e Elvis funzionano molto bene insieme. Utilizzi ?. per raggiungere un valore e ?: per fornire un valore predefinito se qualcosa era null.
Questo modello trasforma un risultato nullable in un risultato sicuramente non null.
fun main() {
val name: String? = null
val len: Int = name?.length ?: 0
println(len) // prints: 0
}Esempio di lunghezza predefinita
Qui il tipo del risultato è un semplice Int, non Int?. L'operatore Elvis ha rimosso la nullability.
Dopo ?: con un valore alternativo non null, il compilatore sa che il valore non può mai essere null.
val title: String? = "Kotlin"
val length: Int = title?.length ?: 0
// length is a non-null IntElvis per restituire in anticipo
Poiché return e throw sono espressioni in Kotlin, può inserirle a destra di Elvis.
È un modo chiaro per uscire in anticipo quando manca un valore obbligatorio.
fun process(input: String?) {
val text = input ?: return
println(text.uppercase())
}Chiamata sicura con let
Combini ?. con let per eseguire un blocco solo quando il valore non è null. Al suo interno, il valore è non null e si chiama it.
È un idioma comune per agire su valori opzionali.
fun main() {
val email: String? = "a@b.com"
email?.let {
println("Sending to " + it)
}
}Mettere tutto insieme
Un breve programma può mostrare come chiamata sicura ed Elvis collaborino per produrre un messaggio intuitivo.
Noti che non serve alcuna istruzione if, eppure il codice non rischia mai un arresto anomalo causato da null.
fun main() {
val nickname: String? = null
val display = nickname?.uppercase() ?: "ANONYMOUS"
println(display)
}Quando usare l'uno o l'altro
Utilizzi ?. quando vuole che un risultato null fluisca senza conseguenze. Utilizzi ?: quando vuole sostituire null con un valore predefinito concreto.
Insieme coprono la maggior parte dei casi quotidiani di gestione dei valori null senza controlli verbosi.
val count = list?.size ?: 0
// safe call reads size, Elvis defaults to 0Verifica rapida
Verifichi la Sua comprensione delle chiamate sicure e dell'operatore Elvis.
Riepilogo
La chiamata sicura ?. chiama un membro solo se il ricevitore non è null; in caso contrario restituisce null. L'operatore Elvis ?: sostituisce null con un valore alternativo.
Concatenandoli si elimina la nullability in modo chiaro. In seguito analizzerà più approfonditamente le funzioni di ambito come let e also.
Domande Frequenti
La lezione «Chiamate sicure ed Elvis» è gratuita?
Sì — il testo completo di «Chiamate sicure ed Elvis» è 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 «Chiamate sicure ed Elvis»?
Gli operatori ?. e ?:. 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 2 di 4.
Quanto tempo richiede la lezione «Chiamate sicure ed Elvis»?
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