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
- Tipos anuláveis e o modificador ?
- Chamada segura ?. e Elvis ?: em código real
- let, also e run com receptores anuláveis
- Operador !!: quando e por que evitá-lo