Nulls en colecciones en Kotlin
Parsea entrada sucia sin un solo try/catch.
fun main() {
val logged = listOf("12.4", "n/a", "9.8", "", "15.1")
// toDoubleOrNull turns bad input into null instead of throwing.
val parsed = logged.map { it.toDoubleOrNull() }
println(parsed)
// mapNotNull parses and drops the failures in one pass.
val depths = logged.mapNotNull { it.toDoubleOrNull() }
println("Mean of ${depths.size} readings: ${depths.average()}")
println("First good one: ${parsed.firstOrNull { it != null }}")
}
Cómo funciona
toDoubleOrNullconvierte strings malos en null en vez de excepciones.mapNotNulltransforma y suelta los null en una sola pasada.firstOrNullcon predicado encuentra al primer sobreviviente, o null.
Palabras clave y builtins usados aquí
funitval
El intento, en números
- Líneas
- 13
- Caracteres a escribir
- 440
- Tokens
- 98
- Ritmo de tres estrellas
- 70 tpm
Al ritmo de tres estrellas de 70 tokens por minuto, este intento toma unos 84 segundos.
Paso 3 de 3 en Seguridad ante null; paso 18 de 27 en Fundamentos del lenguaje.