如何在Scala 2.8中实现集合?

时间:2010-03-28 22:48:54

标签: scala scala-collections scala-2.8

在尝试编写API时,我正在努力使用2.8(.0-beta1)中的Scala集合。

基本上我需要写的是:

  • 为某种类型的不可变集添加功能
  • 其中所有像filter和map这样的方法都返回相同类型的集合而不必覆盖所有内容(这就是为什么我首先选择2.8)
  • 您通过这些方法获得的所有集合都是使用原始集合所具有的相同参数构建的(类似于SortedSet通过implicits进行排序的方式)
  • 本身仍然是一个特征,与任何集合实现无关。

此外,我想定义一个默认实现,例如基于HashSet。特征的伴随对象可能使用此默认实现。我不确定是否需要构建器工厂的全部功能来将我的集合类型映射到其他集合类型。

我读了paper on the redesign of the collections API但是从那时起事情似乎发生了一些变化,我在那里遗漏了一些细节。我也深入研究了集合源代码,但我不确定它是否非常一致。

理想情况下,我希望看到的是一个动手实践的教程,它告诉我一步一步我需要的部分或对所有细节的广泛描述,以便我可以判断自己需要哪些部分。我喜欢“Scala编程”中的对象相等章节。 :-)
但是我很欣赏任何能够帮助我更好地理解新集合设计的文档或示例。

1 个答案:

答案 0 :(得分:17)

我将看一下collection.immutable.BitSet的实现。它有点散布,重用来自collection.BitSetLike和collection.generic.BitSetFactory的东西。但它完全按照您的指定执行:实现添加新功能的特定元素类型的不可变集合。