scala - 如何在 Scala 2.8 中实现集合?

标签 scala scala-collections scala-2.8

在尝试编写 API 时,我在 2.8(.0-beta1) 中的 Scala 集合中遇到了困难。

基本上我需要写一些东西:

  • 向特定类型的不可变集添加功能
  • 其中所有方法(例如filter和map)都返回相同类型的集合,而不必覆盖所有内容(这就是我首先选择2.8的原因)
  • 通过这些方法获得的所有集合都是使用原始集合具有的相同参数构造的(类似于 SortedSet 如何通过隐式进行排序)
  • 这本身仍然是一个特征,独立于任何集合的实现。

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

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

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

最佳答案

我想看看 collection.immutable.BitSet 的实现。它有点分散,重用了 collection.BitSetLike 和 collection.generic.BitSetFactory 中的东西。但它完全按照您指定的方式执行:实现添加新功能的特定元素类型的不可变集。

关于scala - 如何在 Scala 2.8 中实现集合?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2534893/

相关文章:

Scala 警告、IntelliJ 和编译器标志

scala - 使用过滤器时,{} 和 () 有什么区别?

scala - 在 Scala 中的 firstCompletedOf 中需要什么是隐式的

scala - 流、 View 、迭代器

斯卡拉 2.8 : how to initialize child class

scala - sbt 获取 RootProject 的构建文件夹

scala - 如果 n 小于大小,则 xs.sliding(n) 的行为不一致?

scala - 如何编写一个返回与传递给它的集合类型相同的集合类型的 zipWith 方法?

scala - Scala actor 如何响应消息返回值?

scala - Java SortedMap 到 Scala TreeMap