Operador Elvis
Parte de la sección Fundamentos del Journey de Kotlin de Coddy. Lección 15 de 93.
El operador de llamada segura es excelente para evitar errores, pero a veces necesitas un valor real en lugar de null. El operador Elvis ?: te permite proporcionar un valor predeterminado cuando una expresión es null.
La sintaxis es sencilla: coloca ?: después de una expresión anulable, seguido del valor alternativo:
fun main() {
val name: String? = null
val displayName = name ?: "Guest"
println(displayName) // Imprime: Guest
}Si el lado izquierdo no es nulo, se utiliza ese valor. Si es nulo, el lado derecho se convierte en el resultado. Esto funciona perfectamente con llamadas seguras:
fun main() {
val text: String? = null
val length = text?.length ?: 0
println(length) // Imprime: 0
val greeting: String? = "Hello"
val greetingLength = greeting?.length ?: 0
println(greetingLength) // Imprime: 5
}El operador recibe su nombre porque ?: se parece al cabello de Elvis visto de lado. Y lo que es más importante, te ofrece una forma clara de convertir tipos que admiten valores nulos en valores que no admiten valores nulos, con valores predeterminados sensatos.
Desafío
FácilUn paquete tiene una etiqueta de seguimiento opcional y un destino opcional. El código inicial proporciona ambos valores anulables. Usa ?: para elegir "Pending" cuando falte la etiqueta de seguimiento y "Unassigned" cuando falte el destino. Imprime la etiqueta elegida, después el destino elegido, en líneas separadas.
Pruébalo tú mismo
fun main() {
val trackingLabel: String? = null
val destination: String? = "Harbor"
// Elige e imprime los dos valores de visualización.
}
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