Menu
Coddy logo textTech

Operador de llamada segura

Parte de la sección Fundamentos del Journey de Kotlin de Coddy. Lección 14 de 93.

Cuando tienes una variable que admite valores nulos, no puedes llamar directamente a sus métodos ni acceder a sus propiedades: el compilador no lo permitirá porque el valor podría ser nulo. El operador de llamada segura ?. resuelve este problema con elegancia.

En lugar de usar un punto normal ., usas ?. para acceder de forma segura a los miembros de un tipo anulable:

fun main() {
    val name: String? = "Alice"
    val length = name?.length  // Devuelve 5
    println(length)
    
    val nullName: String? = null
    val nullLength = nullName?.length  // Devuelve null (¡sin crash!)
    println(nullLength)
}

El operador de llamada segura comprueba si el valor es nulo antes de acceder a la propiedad o al método. Si el valor es nulo, toda la expresión devuelve null en lugar de producir un error. Si el valor existe, funciona igual que una llamada normal.

También puedes encadenar varias llamadas seguras:

fun main() {
    val text: String? = "Hello"
    val result = text?.uppercase()?.length
    println(result)  // Imprime: 5
}

Si alguna parte de la cadena es nula, toda la expresión devuelve null de forma segura sin lanzar un error.

challenge icon

Desafío

Fácil

Se te proporciona la siguiente variable anulable:

val message: String? = "Kotlin"

Usa el operador de llamada segura para:

  1. Obtener la longitud de message e imprimirla
  2. Convertir message a mayúsculas e imprimir el resultado

Después, crea otra variable anulable:

val empty: String? = null

Usa el operador de llamada segura para obtener la longitud de empty e imprimirla.

Cada resultado debe imprimirse en una línea separada. Recuerda: el operador de llamada segura devuelve null cuando el valor es null.

Pruébalo tú mismo

fun main() {
    val message: String? = "Kotlin"
    
    // TODO: Usa el operador de llamada segura para obtener la longitud de message e imprimirla
    
    // TODO: Usa el operador de llamada segura para convertir message a mayúsculas e imprimirlo
    
    val empty: String? = null
    
    // TODO: Usa el operador de llamada segura para obtener la longitud de empty e imprimirla
}
quiz iconPonte a prueba

Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.

Todas las lecciones de Fundamentos

Practica por tu cuenta: Playground de Kotlin