标识符Array 指的是类型或其伴随对象,具体取决于上下文。
scala> Array('a', 'b', 'c')
res0: Array[Char] = Array(a, b, c)
res0 是Array 类型的一个实例。 res0 是一个对象。
scala> Array
res1: Array.type = scala.Array$@1a69136
res1 是伴随对象。 res1 是一个对象。它是一个单例,这意味着没有其他类型的对象。
这两个对象有不同的方法,因为它们是非常不同的东西。
Array 类型的实例具有the methods defined by the class。这些自然是对特定Array 实例进行操作的方法。例如,length 方法返回数组的长度。您需要一个实例来执行此操作。写Array.length 是没有意义的,因为它没有指定你想要哪个数组的长度。但是Array('a', 'b', 'c').length 是3。
伴随对象有the methods defined by the object。这些方法不需要需要Array 实例。伴随对象将对象包含创建实例的方法,Array 就是这种情况。因此Array.ofDim(2, 2) 创建了一个 2x2 数组。该方法不是由类定义的,因为实例不应该有它。例如,写Array('a', 'b', 'c').ofDim(2, 2) 没有多大意义,因为结果(一个空的 2x2 数组)与调用该方法的实例无关。