Trabajo idiomático con valores nullable en Kotlin: transformación y acceso seguro
¡Hola! Recientemente comencé a aprender Kotlin después de Java y no puedo acostumbrarme al sistema estricto de tipos nullable. Tengo varios escenarios donde me confundo sobre cómo manejar null correctamente.
Por ejemplo, tengo una función que devuelve un String? nullable desde la base de datos. Necesito:
1. Verificar si el valor no es null
2. Si no es null, convertirlo a Int (parsear)
3. Si el parseo falla o el valor es null — devolver 0
Escribí este código, pero se ve horrible:
```kotlin
fun parseNullableInt(value: String?): Int {
if (value != null) {
return try {
value.toInt()
} catch (e: NumberFormatException) {
0
}
} else {
return 0
}
}
```
Esto funciona, pero seguramente hay una forma más concisa e idiomática. También me interesa:
- ¿Cómo llamar de forma segura a métodos en objetos nullable?
- ¿Cómo convertir tipos nullable a non-nullable con un valor por defecto?
- ¿Qué es el operador Elvis y cuándo usarlo?