Ich versuche, eine Funktion zu schreiben, die einen String und Int? in ein Paar, dann filtert für Nicht-Null-Sekunden-Werte in dem Paar, bevor Sie mit der Zuordnung fortfahren.Kotlin Smartcast den zweiten Wert eines Paares mit Filter
Mein Code sieht wie folgt aus:
val ids: List<String> = listOf("a", "b", "c")
val ints: Map<String, Int?> = mapOf("a" to 1, "b" to 2, "c" to null)
ids.map { id: String ->
Pair(id, ints[id])
}.filter { pair -> pair.second != null}.map { pair: Pair<String, Int> ->
func(id, pair.second)
}
Das Problem ist, dass die zweite Karte die Fehler hat:
Type inference failed: Cannot infer type parameter T in
inline fun <T, R> kotlin.collections.Iterable<T>.map (transform (T) -> R): kotlin.collections.List<R>
Das sieht aus wie da der Compiler nicht weiß, smart meine geworfen Iterable<Pair<String, Int?>>
in eine Iterable<Pair<String, Int>>
nach meiner filter
. Was kann ich stattdessen tun, um das zu lösen?