Scala新手,拥有一个数组,其中一个元素是一个数组:
val aaa = Array("a", "b", Array(1, 2, 3), "c")
这有效:
In []: aaa(2)
Out[]: Array(1, 2, 3)
这有效:
In []: Array(1, 2, 3).size
Out[]:3
这不是:
In []: aaa(2).size
Out[]:
Name: Compile Error
Message: <console>:15: error: value size is not a member of
java.io.Serializable
aaa(2).size
^
我究竟做错了什么?
谢谢
最佳答案
当您使用以下文字创建数组时
val aaa = Array("a", "b", Array(1, 2, 3), "c")
由于元素的类型不同,因此使用 java.io.Serializable 创建数组
aaa
类型。aaa: Array[java.io.Serializable] = Array(a, b, Array(1, 2, 3), c)
因此,当您引用第二个元素时,引用的类型将为
Serializable
,并且其中没有size属性。因此,我们需要使用 asInstanceOf 显式地将第二个元素转换/转换为Array。如下所示 if (aaa(2).isInstanceOf[Array[Int]])
aaa(2).asInstanceOf[Array[Int]].size