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.
Desafío
FácilSe te proporciona la siguiente variable anulable:
val message: String? = "Kotlin"Usa el operador de llamada segura para:
- Obtener la longitud de
messagee imprimirla - Convertir
messagea mayúsculas e imprimir el resultado
Después, crea otra variable anulable:
val empty: String? = nullUsa 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
nullcuando el valor esnull.
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
}Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Todas las lecciones de Fundamentos
4Operadores, parte 1
Operadores aritméticosOperador móduloAsignación aumentadaOperadores de comparaciónRepaso: matemáticas simples7Entrada y salida básicas
Función PrintlnPlantillas de cadenasEntrada con ReadLineConversión de tiposRepaso - Años hasta la jubilaciónRepaso - Verdadero o falso10Funciones
Declarar una funciónParámetros y argumentosValores de retornoArgumentos con nombreValores predeterminadosFunciones de una sola expresiónRepaso - Función SigmaRepaso - Función de validación2Variables
Val frente a VarInferencia de tiposNúmerosCadenaBooleanoConvenciones de nomenclaturaRepaso: inicializar variables5Operadores Parte 2
Operadores lógicos Parte 1Operadores lógicos Parte 2Operadores lógicos Parte 3Ternario con expresión ifRepaso: lógica simple8Calculadora para dividir la cuenta
Mensaje de bienvenidaObtención de datos11FizzBuzz con un giro
Descripción general del juegoLa función FizzBuzz3Nullabilidad
Qué es la seguridad frente a valores nulosTipos anulablesOperador de llamada seguraOperador ElvisConceptos básicos de retos de funcionesAfirmación de no nulidadRepaso: acceso seguro6Toma de decisiones
Sentencia ifIf - ElseIf como expresiónExpresión whenWhen con rangosRepaso - Calculadora simple9Bucles
Bucle ForBucle WhileBucle Do-WhileBreakContinueRangos en buclesBucle anidadoRepaso - FactorialRepaso - Entrada dinámicaPractica por tu cuenta: Playground de Kotlin