Menu
CoddyTech

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 nem acessar propriedades diretamente nela: o compilador não permite 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 ., use ?. para acessar membros de um tipo anulável com segurança:

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 travar!)
    println(nullLength)
}

O operador de chamada segura verifica se o valor é null antes de acessar a propriedade ou o método. Se o valor for null, toda a expressão retorna null em vez de causar uma falha. Se o valor existir, funciona 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 retorna nulo com segurança, sem gerar um erro.

challenge icon

Desafio

Fácil

A seguinte variável anulável é fornecida:

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 em letras maiúsculas e imprimi-la
    
    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