0Pricing
Kotlin Academy · Lección

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

  1. Tipos anulables y el modificador ?
  2. Safe Call ?. y Elvis ?: en código real
  3. let, also y run con receptores anulables
  4. Operador !!: cuándo y por qué evitarlo
← Volver a Kotlin Academy