streakode

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. 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. 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. 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. 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.

Más temas de Kotlin

Ver toda la ruta de Kotlin