我是Kotlin的新手,我还在努力学习它 . 我一直在研究这个问题好几个小时,但仍然没有弄明白 . 我希望通过它的索引从列表内部获取一个元素 . 我想出了如何用一个简单的列表来做这个,就像这样
val my_list = listOf(1,2,3)
println(my_list.get(0))
上面的工作,但当我尝试使用存储在 Map 内的列表
val my_list = mutableMapOf<String, Any>()
my_list["set1"] = listOf(1,2,3)
my_list["set2"] = listOf("A","B","C")
my_list["set3"] = listOf("d","e","f")
val sub_list = my_list["set1"]
println(sub_list.get(0))
我收到以下错误
未解决的参考 . 由于接收器类型不匹配,以下候选者都不适用:@InlineOnly public inline operator fun <@OnlyInputTypes K,V> Map.get(key:Int):???在kotlin.collections中定义@SinceKotlin公共运算符fun MatchGroupCollection.get(name:String):MatchGroup?在kotlin.text中定义
注意:我主要使用Python,所以这就是我习惯的 . 我试图在Kotlin中重现的Python功能是有一个列表字典 .
1 回答
问题是 Map 的类型声明,它应该是:
Any
没有get()
方法,因此无法调用它 .即使问题得到解决,你也可能不得不处理可空性问题,因为:
将返回
List<Any>?
,这意味着my_list
可能没有指定键的值 . 如果's the case, you' ll必须做类似的事情:反过来,如果
sub_list
为空,也可能导致异常 . 这可以通过更类似的东西来解决: