Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/38.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
尝试使用不同类型项的数组时,Kotlin未解析引用_Kotlin - Fatal编程技术网

尝试使用不同类型项的数组时,Kotlin未解析引用

尝试使用不同类型项的数组时,Kotlin未解析引用,kotlin,Kotlin,我创建了一个字符串、Int和Boolean数组。 我可以在for循环中求和。但是,如果我试图进行打印(arr[1]+20)则存在“未解决的引用”问题。 有人能给我解释一下吗?谢谢。正如您所说,数组包含混合类型,因此编译器无法推断arr[1]是整数。循环中的不同之处在于,您显式地检查item是否为整数,这样它就可以执行所谓的 因此,你要么投下它,要么重新考虑你的结构,这可能是一个更好的选择。这里可能需要一个可以保存字符串、整数和布尔值的类。您可能认为您正在尝试执行Int+Int。但是数组的类型是A

我创建了一个字符串、Int和Boolean数组。
我可以在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)
}