Menu
Coddy logo textTech

Operatore di chiamata sicura

Fa parte della sezione Fondamenti del percorso Kotlin di Coddy. Lezione 14 di 93.

Quando hai una variabile nullable, non puoi chiamare direttamente i metodi o accedere alle proprietà su di essa: il compilatore non lo consente perché il valore potrebbe essere null. L’operatore di chiamata sicura ?. risolve elegantemente questo problema.

Invece di usare un normale punto ., usa ?. per accedere in sicurezza ai membri di un tipo nullable:

fun main() {
    val name: String? = "Alice"
    val length = name?.length  // Returns 5
    println(length)
    
    val nullName: String? = null
    val nullLength = nullName?.length  // Returns null (no crash!)
    println(nullLength)
}

L'operatore di chiamata sicura verifica se il valore è null prima di accedere alla proprietà o al metodo. Se il valore è null, l'intera espressione restituisce null invece di andare in errore. Se il valore esiste, funziona proprio come una chiamata normale.

Puoi anche concatenare più chiamate sicure:

fun main() {
    val text: String? = "Hello"
    val result = text?.uppercase()?.length
    println(result)  // Stampa: 5
}

Se una qualsiasi parte della catena è null, l’intera espressione restituisce null in modo sicuro senza generare errori.

challenge icon

Sfida

Facile

Ti viene fornita la seguente variabile nullable:

val message: String? = "Kotlin"

Usa l'operatore di chiamata sicura per:

  1. Ottenere la lunghezza di message e stamparla
  2. Convertire message in maiuscolo e stampare il risultato

Quindi, crea un'altra variabile nullable:

val empty: String? = null

Usa l'operatore di chiamata sicura per ottenere la lunghezza di empty e stamparla.

Ogni risultato dovrebbe essere stampato su una riga separata. Ricorda: l'operatore di chiamata sicura restituisce null quando il valore è null.

Provalo tu

fun main() {
    val message: String? = "Kotlin"
    
    // TODO: Usa l'operatore di chiamata sicura per ottenere la lunghezza di message e stamparla
    
    // TODO: Usa l'operatore di chiamata sicura per convertire message in maiuscolo e stamparlo
    
    val empty: String? = null
    
    // TODO: Usa l'operatore di chiamata sicura per ottenere la lunghezza di empty e stamparla
}
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 Fondamenti

Esercitati da solo: Playground Kotlin