13

在尝试编写 API 时,我在 Scala 的 2.8(.0-beta1) 集合中苦苦挣扎。

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

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

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

我阅读了关于重新设计集合 API的论文,但从那时起事情似乎发生了一些变化,我在那里遗漏了一些细节。我还研究了集合源代码,但我不确定它是否非常一致。

理想情况下,我希望看到的是一个动手教程,它一步一步地告诉我我需要的部分,或者对所有细节的广泛描述,这样我就可以判断自己需要哪些部分。我喜欢“Scala 编程”中关于对象相等的章节。:-)
但我感谢任何有助于我更好地理解新系列设计的文档或示例的指针。

4

1 回答 1

17

我会看看collection.immutable.BitSet 的实现。它有点分散,重用了 collection.BitSetLike 和 collection.generic.BitSetFactory 中的东西。但它完全符合您的要求:实现添加新功能的特定元素类型的不可变集。

于 2010-03-29T10:00:13.043 回答