我有 2 个列表,其中一个称为 mod:
listOf("Money", 1)
我试图根据第一个列表的一个索引访问 splitSave 列表的索引。我尝试用这一行来做到这一点:
println("$mod[1]: ${splitSave[mod[1]]}")
编译时,我收到类型不匹配错误,因为 mod[1] 的类型是“any”
如何显式定义类型,或者让 Kotlin 正确推断其类型?
它应该能够找到正确的索引,尽管它会出错并停止程序。
由于
mod
同时包含String和Int,因此其类型将被推断为List。这是正确的,因此您对列表的类型无能为力。但是,如果您想获取 mod[1]
中包含的值并将其视为 Int,则可以在从列表中检索该值后将该值转换为 Int,如下所示:
val splitSave = listOf("a", "b", "c", "d", "e")
val mod = listOf("Money", 1)
val modIndex1 = mod[1] as Int
println("$modIndex1: ${splitSave[modIndex1]}")
转换允许您告诉编译器将该值视为 Int,因此
modIndex1
的类型将为 Int。但请注意,如果您尝试将 String 转换为 Int,您将得到 ClassCastException。