Scala缓冲区:大小或长度?

Edu*_*rdo 12 scala scala-collections

我正在使用一个mutable Buffer,需要找出它有多少元素.

两者sizelength方法都是定义的,继承自不同的特征.

是否有任何实际的性能差异,或者它们是否可以被视为完全同义词?

Dan*_*ral 15

它们是同义词,主要是Java决定size收集和lengthfor Array和的结果String.一个将始终根据另一个进行定义,您可以通过查看源代码,scaladoc上提供的链接,轻松查看哪个是哪个.只需找到定义特征,打开源代码,然后搜索def sizedef length.


Imp*_*ive 5

在这种情况下,它们可以被视为同义词.您可能需要注意其他一些情况,例如Array- 虽然长度和大小将始终返回相同的结果,但在Scala 2.10之前的版本中,可能存在用于调用的装箱开销size(由阵列周围的Scala包装提供) ,而length 由底层Java数组提供.

在Scala 2.10中,通过使用提供size方法的值类来消除此开销,因此您可以随意使用您喜欢的任何方法.