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

09-30 15:00
查看更多