0Pricing
Kotlin Academy · Aula

Chamada segura ?. e Elvis ?: em código real

Encadeie chamadas seguras e forneça valores substitutos usando o operador Elvis.

Chamada segura ?. e Elvis ?: em código real é uma aula grátis de Kotlin Academy no CoddyKit. Esta é a aula 2 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Kotlin Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Kotlin Academy inclui 4 aulas no total.

Dois operadores, grande impacto

A chamada segura ?. chama um membro somente se o receptor não for null. O operador Elvis ?: fornece um valor alternativo quando o lado esquerdo é null.

Fundamentos da chamada segura

x?.member resulta em null se x for null; caso contrário, acessa member normalmente.

fun main() {
    val name: String? = "Kotlin"
    val len: Int? = name?.length
    println(len) // 6
    val nope: String? = null
    println(nope?.length) // null
}

Fundamentos do operador Elvis

x ?: default retorna x se ele não for null; caso contrário, retorna o default à direita.

fun main() {
    val name: String? = null
    val display = name ?: "Anonymous"
    println(display) // Anonymous
}

Combinando chamada segura e Elvis

Um padrão comum: obj?.member ?: default — ler um valor ou usar uma alternativa.

fun main() {
    val name: String? = null
    val length = name?.length ?: 0
    println("length = $length") // 0
}

Encadeando chamadas seguras

Encadeie ?. por vários níveis — toda a expressão resulta em null se qualquer elo for null.

class Address(val city: String?)
class User(val address: Address?)
fun main() {
    val u: User? = User(Address(null))
    val city = u?.address?.city ?: "Unknown"
    println(city) // Unknown
}

Lançando uma exceção no lado direito do Elvis

O lado direito do Elvis pode ser qualquer expressão, inclusive throw — isso é útil para verificar valores obrigatórios.

fun loadConfig(path: String?): String {
    val p = path ?: throw IllegalArgumentException("path required")
    return "loaded $p"
}
fun main() {
    println(loadConfig("/etc/app"))
    // loadConfig(null) // throws
}

Chamada segura com métodos

As chamadas seguras funcionam com qualquer método, não apenas com acesso a propriedades.

fun main() {
    val raw: String? = "  hello  "
    val cleaned = raw?.trim()?.uppercase() ?: ""
    println(cleaned) // HELLO
}

Chamada segura em condições

Você pode usar chamadas seguras dentro de condições. Combine-as com o Elvis para obter valores booleanos padrão.

fun main() {
    val name: String? = "Alice"
    if (name?.startsWith("A") == true) {
        println("Starts with A")
    }
}

Elvis com return

Use o Elvis com return para criar cláusulas de guarda: saia antecipadamente se um valor obrigatório for null.

fun process(input: String?) {
    val safe = input ?: return
    println("processing $safe")
}
fun main() {
    process("abc")
    process(null) // returns silently
}

Elvis com continue/break

Dentro de laços, o Elvis pode interromper o fluxo com continue ou break para tratar nulos de forma concisa.

fun main() {
    val items: List<String?> = listOf("a", null, "b", null, "c")
    for (item in items) {
        val v = item ?: continue
        print("$v ")
    }
    println() // a b c
}

Prática: consulta de configuração

A chamada segura e o Elvis se combinam em uma única linha que lê uma configuração opcional com um valor padrão.

class Config(val timeoutMs: Int?, val host: String?)
fun main() {
    val cfg: Config? = Config(null, "prod.example.com")
    val timeout = cfg?.timeoutMs ?: 5000
    val host = cfg?.host ?: "localhost"
    println("$host @ $timeout ms")
}

Verificação rápida

Qual é o resultado de user?.email ?: "unknown" quando user é null?

Recapitulação

Combine a chamada segura (?.) e o Elvis (?:) para escrever código conciso e seguro contra nulos. Use o Elvis com throw ou return para criar cláusulas de guarda que saem antecipadamente quando faltam dados.

Perguntas Frequentes

A aula “Chamada segura ?. e Elvis ?: em código real” é grátis?

Sim — o texto completo de “Chamada segura ?. e Elvis ?: em código real” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Kotlin Academy, atualize para CoddyKit PRO. O curso de Kotlin Academy inclui 4 aulas no total.

O que vou aprender em “Chamada segura ?. e Elvis ?: em código real”?

Encadeie chamadas seguras e forneça valores substitutos usando o operador Elvis. Você pratica Kotlin Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.

Preciso ter experiência prévia para começar Kotlin Academy?

Nenhuma experiência prévia é necessária. Kotlin Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 2 de 4.

Quanto tempo leva a aula “Chamada segura ?. e Elvis ?: em código real”?

A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.

Posso escrever e executar código nesta aula de Kotlin Academy?

Sim. Cada aula de Kotlin Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.

Todas as aulas deste curso

  1. Tipos anuláveis e o modificador ?
  2. Chamada segura ?. e Elvis ?: em código real
  3. let, also e run com receptores anuláveis
  4. Operador !!: quando e por que evitá-lo
← Voltar para Kotlin Academy