Llamadas seguras y Elvis
Los operadores ?. y ?:
Llamadas seguras y Elvis es una lección gratuita de Android 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 Android Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Android Academy incluye 4 lecciones en total.
Más allá de las comprobaciones con if
Comprobar cada valor anulable con un if funciona, pero el código se vuelve verboso rápidamente. Kotlin ofrece operadores compactos diseñados para gestionar nulos.
En esta lección se explican el operador de llamada segura ?. y el operador Elvis ?:, dos herramientas que usará constantemente.
El operador de llamada segura
El operador ?. llama a un método únicamente si el valor no es nulo. Si es nulo, toda la expresión se evalúa como null en lugar de producir un error.
Es un atajo seguro para el patrón de comprobar si no es nulo.
fun main() {
val name: String? = "Coddy"
println(name?.length)
}Llamada segura sobre null
Cuando el receptor es nulo, la llamada segura se detiene y devuelve null. No se produce ninguna excepción.
Aquí el resultado impreso es la palabra null, no un error.
fun main() {
val name: String? = null
println(name?.length) // prints: null
}Encadenar llamadas seguras
Puede encadenar ?. en varios pasos. Si algún enlace es nulo, toda la cadena se detiene y produce null.
Esto resulta perfecto para recorrer datos opcionales anidados.
class Address(val city: String?)
class User(val address: Address?)
fun cityOf(u: User?): String? {
return u?.address?.city
}El operador Elvis
El operador Elvis ?: proporciona un valor alternativo cuando el lado izquierdo es nulo. Recibe su nombre del peinado del cantante, al que se parece el símbolo.
Se puede leer así: use el valor izquierdo o, si no, el valor derecho.
fun main() {
val name: String? = null
val shown = name ?: "Guest"
println(shown) // prints: Guest
}Elvis con llamadas seguras
La llamada segura y Elvis funcionan muy bien juntos. Use ?. para acceder al valor y ?: para proporcionar un valor predeterminado si algo era nulo.
Este patrón convierte un resultado anulable en uno que se garantiza que no es nulo.
fun main() {
val name: String? = null
val len: Int = name?.length ?: 0
println(len) // prints: 0
}Ejemplo de longitud predeterminada
Aquí el tipo del resultado es un Int normal, no Int?. El operador Elvis ha eliminado la posibilidad de que sea nulo.
Después de ?: con un valor alternativo no nulo, el compilador sabe que el valor nunca puede ser nulo.
val title: String? = "Kotlin"
val length: Int = title?.length ?: 0
// length is a non-null IntElvis para retornar antes
Como return y throw son expresiones en Kotlin, puede colocarlas a la derecha de Elvis.
Esta es una forma clara de salir anticipadamente cuando falta un valor necesario.
fun process(input: String?) {
val text = input ?: return
println(text.uppercase())
}Llamada segura con let
Combine ?. con let para ejecutar un bloque únicamente cuando el valor no sea nulo. Dentro del bloque, el valor no es nulo y se denomina it.
Este es un patrón habitual para actuar sobre valores opcionales.
fun main() {
val email: String? = "a@b.com"
email?.let {
println("Sending to " + it)
}
}Unir todos los conceptos
Un programa corto puede mostrar cómo la llamada segura y Elvis colaboran para producir un mensaje claro para el usuario.
Observe que no se necesita ninguna instrucción if, pero el código nunca corre el riesgo de sufrir un error por un valor nulo.
fun main() {
val nickname: String? = null
val display = nickname?.uppercase() ?: "ANONYMOUS"
println(display)
}Cuándo usar cada uno
Use ?. cuando quiera que un resultado nulo fluya sin causar problemas. Use ?: cuando quiera sustituir el nulo por un valor predeterminado concreto.
Juntos cubren la gran mayoría de los casos cotidianos de gestión de nulos sin comprobaciones verbosas.
val count = list?.size ?: 0
// safe call reads size, Elvis defaults to 0Comprobación rápida
Compruebe su dominio de las llamadas seguras y el operador Elvis.
Recapitulación
La llamada segura ?. llama a un miembro únicamente si el receptor no es nulo; de lo contrario, produce null. El operador Elvis ?: sustituye un nulo por un valor alternativo.
Encadenarlos elimina limpiamente la posibilidad de nulos. A continuación explorará con más detalle funciones de ámbito como let y also.
Preguntas frecuentes
¿La lección «Llamadas seguras y Elvis» es gratis?
Sí — el texto completo de «Llamadas seguras y Elvis» 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 Android Academy, actualiza a CoddyKit PRO. El curso de Android Academy incluye 4 lecciones en total.
¿Qué aprenderé en «Llamadas seguras y Elvis»?
Los operadores ?. y ?: Practicas Android 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 Android Academy?
No se requiere experiencia previa. Android 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 «Llamadas seguras y Elvis»?
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 Android Academy?
Sí. Cada lección de Android 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 frente a no anulables
- Llamadas seguras y Elvis
- let, also y funciones de ámbito
- Evitar NullPointerExceptions