尝试使用不同类型项的数组时,Kotlin未解析引用
我创建了一个字符串、Int和Boolean数组。尝试使用不同类型项的数组时,Kotlin未解析引用,kotlin,Kotlin,我创建了一个字符串、Int和Boolean数组。 我可以在for循环中求和。但是,如果我试图进行打印(arr[1]+20)则存在“未解决的引用”问题。 有人能给我解释一下吗?谢谢。正如您所说,数组包含混合类型,因此编译器无法推断arr[1]是整数。循环中的不同之处在于,您显式地检查item是否为整数,这样它就可以执行所谓的 因此,你要么投下它,要么重新考虑你的结构,这可能是一个更好的选择。这里可能需要一个可以保存字符串、整数和布尔值的类。您可能认为您正在尝试执行Int+Int。但是数组的类型是A
我可以在for循环中求和。但是,如果我试图进行
打印(arr[1]+20)
则存在“未解决的引用”问题。
有人能给我解释一下吗?谢谢。正如您所说,数组包含混合类型,因此编译器无法推断
arr[1]
是整数。循环中的不同之处在于,您显式地检查item
是否为整数,这样它就可以执行所谓的
因此,你要么投下它,要么重新考虑你的结构,这可能是一个更好的选择。这里可能需要一个可以保存字符串、整数和布尔值的类。您可能认为您正在尝试执行Int+Int。但是数组的类型是Any。因此,您有任何不是有效函数的+Int。你可以做(arr[1]as Int)+20同样,一般来说,在数组中包含不同类型的项不是一个好主意,“我创建了一个字符串、Int和Boolean的数组”。 您实际创建的是一个
数组
(刚开始时恰好包含一个字符串、一个Int和一个Boolean)。 当您提取一个值时,编译器只知道它是一个Any
——除非您自己检查它,就像在循环中一样。 但这并没有告诉你任何关于它的事情。
fun main() {
val arr = arrayOf("hello",3,true)
for(item in arr) if(item is Int) println(item + 20 )
// print(arr[1] + 20)
}