Tipos anulables
Parte de la sección Fundamentos del Journey de Kotlin de Coddy. Lección 13 de 93.
A veces realmente necesitas una variable que pueda contener «nada». Por ejemplo, es posible que el segundo nombre de un usuario no exista o que una búsqueda no devuelva resultados. Kotlin permite esto mediante los tipos anulables.
Para hacer que un tipo admita valores nulos, añade un ? después del nombre del tipo:
fun main() {
var middleName: String? = "Marie"
middleName = null // ¡Esto ahora está permitido!
val age: Int? = null // Puede contener un Int o null
}El ? le indica a Kotlin: «Esta variable podría ser nula, así que ten cuidado con ella». Sin el ?, el tipo no admite valores nulos y nunca puede contener null.
Importante: Los tipos anulables y no anulables son diferentes. No puedes asignar directamente un valor anulable a una variable no anulable:
fun main() {
val nullableName: String? = "Alice"
val regularName: String = nullableName // ¡Error!
}Esta distinción es intencional. Te obliga a gestionar la posibilidad de que el valor sea nulo antes de usarlo. En las próximas lecciones, aprenderás las formas seguras que ofrece Kotlin para trabajar con valores que pueden ser nulos.
Desafío
FácilDeclara las siguientes variables anulables:
- Una
Stringanulable llamadanicknamecon el valor"Shadow" - Una
Intanulable llamadaagecon el valornull - Una
Doubleanulable llamadabalancecon el valor99.5
Después imprime los tres valores en líneas separadas usando println().
Recuerda usar
?después del nombre del tipo para hacerlo anulable. Imprimir un valornullmostrará la palabranull.
Pruébalo tú mismo
fun main() {
// TODO: Declara las siguientes variables anulables:
// 1. Un String anulable llamado 'nickname' con valor "Shadow"
// 2. Un Int anulable llamado 'age' con valor null
// 3. Un Double anulable llamado 'balance' con valor 99.5
// Luego imprime los tres valores en líneas separadas
}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