如何在Scala文档中阅读class/object
如何在Scala文档中阅读class/object
我刚学习Scala。
当我阅读官方文档查询Array
时,它有两个版本。一个是针对Class,另一个是针对Object。我认为我知道Class和Object的区别,当我需要找到Array
方法时,我通常会去Class版本。但我不太清楚在什么时候需要去这个Object版本。似乎当我想创建多维数组时,需要用Object版本中的方法(ofDim
),而不是Class版本。为什么呢?
admin 更改状态以发布 2023年5月21日
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
类型的实例具有类定义的方法。这些自然是操作特定Array
实例的方法。例如,length
方法返回数组的长度。您需要一个实例才能执行此操作。写Array.length
是没有意义的,因为它没有指定您需要哪个数组的长度。但Array('a','b','c').length
是3
。
伴生对象具有对象定义的方法。这些方法不需要Array
实例。伴生对象将包含创建实例的方法,Array
也是如此。因此,Array.ofDim(2,2)
创建一个2x2数组。该方法没有由类定义,因为实例不应该具有它。例如,写Array('a','b','c').ofDim(2,2)
没有多少意义,因为结果(一个空的2x2数组)与调用该方法时传入的实例无关。