我正在尝试想出一个函数,通过应用单个函数,允许将Map<String,Any?>
对象视为Map<String,Any>
,从而实现类型推断。
我对Kotlin中的转换函数还不太熟悉,已经尝试了各种在映射上使用filter
、filterValues
和filterNot
等方法:
val input = mapOf(Pair("first",null))
val filtered: Map<String,Any> = input.filter { it.value!=null }
它也无法编译任何一个。
input.filterValues { it!=null }
input.filterNot { it.value==null }
input.filterNot { it.value is Nothing }
我能做到的最接近的是应用多个步骤或者有一个未经检查的转换警告。我本以为过滤值为!=null
就足够了。我唯一的想法是这可能与泛型有关?
mapValues
是否可以简化,或者我们只能接受Map.Entry
作为输入吗?对我来说,它似乎很奇怪,它不直接提供值类型V并期望返回类型R,但我想这样做可能会带来性能损耗,因为遍历entry set并不是那么高效。也许函数名称太模糊了? - Harry J.mapValues { it.value as Any }
可以达到相同的结果,并且不需要传递已经可访问的it
。 - Harry J