Kotlin: исключить нули из списка (или другого функционального преобразования)
проблема
Каков идиоматический способ обойти это ограничение нулевой безопасности в системе типа Котлина?
val strs1:List<String?> = listOf("hello", null, "world")
// ERROR: Type Inference Failed: Expected Type Mismatch:
// required: List<String>
// round: List<String?>
val strs2:List<String> = strs1.filter { it != null }
Этот вопрос непросто об устранении нулей, но также и о том, чтобы система типов распознала, что нулевые значения удаляются из коллекции преобразованием.
Я бы предпочел не зацикливаться, но я сделаю это, если это лучший способ сделать это.
Работа-AroundСледующие компиляции, но я не уверен, что это лучший способ сделать это:
fun <T> notNullList(list: List<T?>):List<T> {
val accumulator:MutableList<T> = mutableListOf()
for (element in list) {
if (element != null) {
accumulator.add(element)
}
}
return accumulator
}
val strs2:List<String> = notNullList(strs1)