Safe Call ?. y Elvis ?: en código real
Encadene llamadas seguras y proporcione valores alternativos mediante el operador Elvis.
Safe Call ?. y Elvis ?: en código real es una lección gratuita de Kotlin Academy en CoddyKit. Esta es la lección 2 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Kotlin Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Kotlin Academy incluye 4 lecciones en total.
Dos operadores, gran impacto
La llamada segura ?. llama a un miembro solo si el receptor no es null. El operador Elvis ?: proporciona un valor alternativo cuando el lado izquierdo es null.
Conceptos básicos de la llamada segura
x?.member se evalúa como null si x es null; de lo contrario, accede a member con normalidad.
fun main() {
val name: String? = "Kotlin"
val len: Int? = name?.length
println(len) // 6
val nope: String? = null
println(nope?.length) // null
}Conceptos básicos del operador Elvis
x ?: default devuelve x si no es null; en caso contrario, devuelve default, situado a la derecha.
fun main() {
val name: String? = null
val display = name ?: "Anonymous"
println(display) // Anonymous
}Combinar la llamada segura y Elvis
Patrón habitual: obj?.member ?: default: leer un valor o usar una alternativa.
fun main() {
val name: String? = null
val length = name?.length ?: 0
println("length = $length") // 0
}Encadenar llamadas seguras
Encadene ?. a través de varios niveles; toda la expresión se corta y devuelve null si algún eslabón es 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
}Lanzar una excepción a la derecha de Elvis
El lado derecho de Elvis puede ser cualquier expresión, incluido throw; resulta útil para comprobar valores obligatorios.
fun loadConfig(path: String?): String {
val p = path ?: throw IllegalArgumentException("path required")
return "loaded $p"
}
fun main() {
println(loadConfig("/etc/app"))
// loadConfig(null) // throws
}Llamada segura con métodos
Las llamadas seguras funcionan con cualquier método, no solo con el acceso a propiedades.
fun main() {
val raw: String? = " hello "
val cleaned = raw?.trim()?.uppercase() ?: ""
println(cleaned) // HELLO
}Llamada segura en condiciones
Puede usar llamadas seguras dentro de condiciones. Combínelas con Elvis para obtener valores booleanos predeterminados.
fun main() {
val name: String? = "Alice"
if (name?.startsWith("A") == true) {
println("Starts with A")
}
}Elvis con return
Use Elvis con return para crear cláusulas de guarda: salga pronto si un valor obligatorio es null.
fun process(input: String?) {
val safe = input ?: return
println("processing $safe")
}
fun main() {
process("abc")
process(null) // returns silently
}Elvis con continue/break
Dentro de los bucles, Elvis puede cortar la ejecución con continue o break para gestionar null 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áctica: búsqueda de configuración
La llamada segura y Elvis se combinan en una sola línea que lee una configuración opcional con un valor predeterminado.
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")
}Comprobación rápida
¿En qué se evalúa user?.email ?: "unknown" cuando user es null?
Repaso
Combine la llamada segura (?.) y Elvis (?:) para escribir código conciso y seguro frente a null. Use Elvis con throw o return para crear cláusulas de guarda que salgan pronto cuando falten datos.
Preguntas frecuentes
¿La lección «Safe Call ?. y Elvis ?: en código real» es gratis?
Sí — el texto completo de «Safe Call ?. y Elvis ?: en código real» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Kotlin Academy, actualiza a CoddyKit PRO. El curso de Kotlin Academy incluye 4 lecciones en total.
¿Qué aprenderé en «Safe Call ?. y Elvis ?: en código real»?
Encadene llamadas seguras y proporcione valores alternativos mediante el operador Elvis. Practicas Kotlin Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar Kotlin Academy?
No se requiere experiencia previa. Kotlin Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 2 de 4.
¿Cuánto tiempo toma la lección «Safe Call ?. y Elvis ?: en código real»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de Kotlin Academy?
Sí. Cada lección de Kotlin Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- Tipos anulables y el modificador ?
- Safe Call ?. y Elvis ?: en código real
- let, also y run con receptores anulables
- Operador !!: cuándo y por qué evitarlo