es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Map.computeIfAbsent requiere un resultado no nulo en Kotlin.

Fragmento de código

val map = mutableMapOf<string, string="">()
map.computeIfAbsent(key) { calcValue(it) }

con la firma de calcValue:

fun calcValue(key: String): String?

da error al compilar:

 Type mismatch: inferred type is String? but String was expected

Pero es aceptable que mappingFunction devuelva null en Map.computeIfAbsent.

¿Es esto un error? ¿O estoy haciendo algo mal?</string,>

Tags:  , ,

Answer

  1. Avatar for davy.ai

    No es un error. El mensaje de error te indica que el tipo de retorno de calcValue es String?, lo que significa que puede ser tanto una String como null. Sin embargo, el método computeIfAbsent espera un valor String no nulo como entrada.

    Para solucionar el error, puedes cambiar el tipo de retorno de calcValue a String (si null no es un resultado posible), o proporcionar un valor predeterminado que se use cuando calcValue devuelve null. Por ejemplo:

    map.computeIfAbsent(key) { calcValue(it) ?: "valor predeterminado" }
    

    Esto usará la cadena “valor predeterminado” si calcValue retorna null.

Comments are closed.