为什么Scala Set上没有lengthCompare方法?

时间:2016-03-02 21:02:54

标签: scala

在Scala Seq中,有lengthCompare方法返回Seq长度与给定Int之间的比较而不计算{{1}的长度}。

它在特征Seq中实现如下:

SeqLike

由于此实施仅需要/** Compares the length of this $coll to a test value. * * @param len the test value that gets compared with the length. * @return A value `x` where * {{{ * x < 0 if this.length < len * x == 0 if this.length == len * x > 0 if this.length > len * }}} * The method as implemented here does not call `length` directly; its running time * is `O(length min len)` instead of `O(length)`. The method should be overwritten * if computing `length` is cheap. */ def lengthCompare(len: Int): Int = { if (len < 0) 1 else { var i = 0 val it = iterator while (it.hasNext) { if (i == len) return if (it.hasNext) 1 else 0 it.next() i += 1 } i - len } } ,为什么不在iterator中定义?

这会使其在IterableLikeSeqSet集合中可用。

1 个答案:

答案 0 :(得分:1)

昨天刚发布的经过彻底修改的新Scala 2.13集合中有一个see here。原因很简单,关于Scala集合的很多事情都不是应有的方式,现在已经修复了。它存在于新版本中的事实表明,它不是先前排除它的积极选择。