Menu
Coddy logo textTech

Afirmación de no nulidad

Parte de la sección Fundamentos del Journey de Kotlin de Coddy. Lección 17 de 93.

El operador de llamada segura y el operador Elvis manejan los valores nulos correctamente, pero a veces estás absolutamente seguro de que un valor que admite valores nulos no es nulo en un punto específico de tu código. El operador de aserción de no nulidad !! te permite decirle a Kotlin: «Garantizo que esto no es nulo».

fun main() {
    val name: String? = "Alice"
    val length = name!!.length  // Convierte String? a String
    println(length)  // Imprime: 5
}

El operador !! convierte un tipo que admite valores nulos en su equivalente que no admite valores nulos. Sin embargo, si el valor realmente es nulo, tu programa se bloqueará con una NullPointerException:

fun main() {
    val name: String? = null
    val length = name!!.length  // ¡Se estrella aquí!
}

Cuándo usarlo: Usa !! únicamente cuando tengas una lógica que garantice que el valor no puede ser nulo, pero el compilador no pueda verificarlo. En la mayoría de los casos, prefiere las llamadas seguras ?. o el operador Elvis ?:. La aserción de no nulo debe ser tu último recurso, no tu primera opción.

challenge icon

Desafío

Fácil

Escribe una función getUppercaseLength que reciba un parámetro text y devuelva la longitud de su versión en mayúsculas.

La función recibe un valor de cadena no nulo, pero el tipo del parámetro admite valores nulos (String?). Usa el operador de afirmación de no nulidad !! para convertirlo a un tipo que no admita valores nulos; después, encadena el método uppercase() y obtén el length.

Parámetros:

  • text (String?): Una cadena que admite valores nulos y que tiene garantizado contener un valor

Devuelve: La longitud de la versión en mayúsculas del texto (Int)

Nota: Para este desafío, la entrada siempre será una cadena válida, nunca null. Esto simula una situación en la que sabes que el valor existe, pero el compilador no puede verificarlo.

Pruébalo tú mismo

fun getUppercaseLength(text: String?): Int {
    // Escribe el código aquí
}
quiz iconPonte a prueba

Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.

Todas las lecciones de Fundamentos

Practica por tu cuenta: Playground de Kotlin