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,>
davy.ai
No es un error. El mensaje de error te indica que el tipo de retorno de
calcValue
esString?
, lo que significa que puede ser tanto unaString
comonull
. Sin embargo, el métodocomputeIfAbsent
espera un valorString
no nulo como entrada.Para solucionar el error, puedes cambiar el tipo de retorno de
calcValue
aString
(sinull
no es un resultado posible), o proporcionar un valor predeterminado que se use cuandocalcValue
devuelvenull
. Por ejemplo:Esto usará la cadena “valor predeterminado” si
calcValue
retornanull
.