Menu
Coddy logo textTech

Operador de chamada segura

Parte da seção Fundamentos do Journey de Kotlin da Coddy. Lição 14 de 93.

Quando você tem uma variável anulável, não pode chamar métodos ou acessar propriedades diretamente nela: o compilador não permitirá isso porque o valor pode ser nulo. O operador de chamada segura ?. resolve esse problema de forma elegante.

Em vez de usar um ponto comum ., você usa ?. para acessar com segurança membros de um tipo anulável:

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

O operador de chamada segura verifica se o valor é nulo antes de acessar a propriedade ou o método. Se o valor for nulo, a expressão inteira retorna null em vez de causar uma falha. Se o valor existir, ele funciona exatamente como uma chamada normal.

Você também pode encadear várias chamadas seguras:

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

Se qualquer parte da cadeia for nula, a expressão inteira retornará nulo com segurança, sem lançar um erro.

challenge icon

Desafio

Fácil

Você recebeu a seguinte variável anulável:

val message: String? = "Kotlin"

Use o operador de chamada segura para:

  1. Obter o comprimento de message e imprimi-lo
  2. Converter message para maiúsculas e imprimir o resultado

Em seguida, crie outra variável anulável:

val empty: String? = null

Use o operador de chamada segura para obter o comprimento de empty e imprimi-lo.

Cada resultado deve ser impresso em uma linha separada. Lembre-se: o operador de chamada segura retorna null quando o valor é null.

Experimente você mesmo

fun main() {
    val message: String? = "Kotlin"
    
    // TODO: Use o operador de chamada segura para obter o comprimento de message e imprimi-lo
    
    // TODO: Use o operador de chamada segura para converter message para maiúsculas e imprimi-lo
    
    val empty: String? = null
    
    // TODO: Use o operador de chamada segura para obter o comprimento de empty e imprimi-lo
}
quiz iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

Todas as lições de Fundamentos

Pratique por conta própria: Playground de Kotlin