【发布时间】:2020-07-18 01:54:18
【问题描述】:
我刚开始学习 Scala,遇到了两种初始化空 ArrayBuffer 的语法,它们是:
ArrayBuffer.empty[A]ArrayBuffer\[A]()
在使用它们方面是否有任何区别或偏好,因为当添加和播放元素时两者都会产生相同的结果?
【问题讨论】:
我刚开始学习 Scala,遇到了两种初始化空 ArrayBuffer 的语法,它们是:
ArrayBuffer.empty[A]ArrayBuffer\[A]()在使用它们方面是否有任何区别或偏好,因为当添加和播放元素时两者都会产生相同的结果?
【问题讨论】:
它们是相同的,正如source code所见证的那样:
def empty[A]: ArrayBuffer[A] = new ArrayBuffer[A]()
并非所有类型都提供<type>[Element]() 形式的初始化(例如,参见Option),但<type>.empty[Element] 非常通用,因此即使它显得多余和冗长也可以使用。
【讨论】:
apply 调用 empty 而不是反过来。