Kotlin 2.4
Ejercicios de Kotlin sobre Null safety
4 ejercicios de Null safety en Kotlin. Piensa la respuesta antes de abrirla: la explicación dice por qué las demás opciones fallan.
1 · Elige la respuesta · nivel 1
¿Qué imprime este código?
val name: String? = nullprintln(name?.length ?: -1)- A-1
- Bnull
- C0
- DNullPointerException
Ver la respuesta
Respuesta: A. -1
name?.length devuelve null porque name es null, y el operador Elvis ?: usa el valor de la derecha cuando la izquierda es null.
2 · Completa el hueco · nivel 1
Completa para imprimir la longitud del email o 0 si es null.
val email: String? = nullprintln(email___length ___ 0)- ?.
- ?:
- !!
- .
- ??
- ||
Ver la respuesta
Respuesta: ?. · ?:
val email: String? = nullprintln(email?.length ?: 0)?. devuelve null en vez de fallar si email es null, y ?: pone un valor por defecto cuando la izquierda es null. !! lanzaría NullPointerException.
3 · Encuentra el fallo · nivel 2
Al llamar a greet(null) el programa revienta. ¿Qué línea tiene el fallo?
1fun greet(name: String?) {2 val length = name!!.length3 println("Hola, $name ($length letras)")4}5 6greet(null)Ver la respuesta
El fallo está en la línea 2:
val length = name!!.length!! le dice al compilador que confíe en que no es null y lanza NullPointerException si lo es. Mejor name?.length ?: 0.
4 · Completa el hueco · nivel 2
Completa para salir de la función en cuanto name sea null.
fun greet(name: String?): String { val n = name ___ return "hola, desconocido" return "hola, $n"}println(greet(null))- ?:
- ?.
- !!
- ??
- ||
- else
Ver la respuesta
Respuesta: ?:
fun greet(name: String?): String { val n = name ?: return "hola, desconocido" return "hola, $n"}println(greet(null))return es una expresión en Kotlin, así que puede ir a la derecha de ?:. A partir de esa línea, el compilador sabe que n no es null.