Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Scala 2.8中实现集合?_Scala_Scala Collections_Scala 2.8 - Fatal编程技术网

如何在Scala 2.8中实现集合?

如何在Scala 2.8中实现集合?,scala,scala-collections,scala-2.8,Scala,Scala Collections,Scala 2.8,在尝试编写API时,我正在与2.8(.0-beta1)中的Scala集合作斗争 基本上我需要写一些东西: 向特定类型的不可变集合添加功能 所有方法(如filter和map)都返回相同类型的集合,而不必重写所有内容(这就是我最初选择2.8的原因) 通过这些方法获得的所有集合都是使用原始集合具有的相同参数构造的(类似于SortedSet通过隐式排序的方式) 这本身仍然是一个特性,独立于任何集合实现 此外,我还想定义一个默认实现,例如基于哈希集的实现。trait的伴随对象可能使用此默认实现。我还不

在尝试编写API时,我正在与2.8(.0-beta1)中的Scala集合作斗争

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

  • 向特定类型的不可变集合添加功能
  • 所有方法(如filter和map)都返回相同类型的集合,而不必重写所有内容(这就是我最初选择2.8的原因)
  • 通过这些方法获得的所有集合都是使用原始集合具有的相同参数构造的(类似于SortedSet通过隐式排序的方式)
  • 这本身仍然是一个特性,独立于任何集合实现
此外,我还想定义一个默认实现,例如基于哈希集的实现。trait的伴随对象可能使用此默认实现。我还不确定是否需要生成器工厂的全部功能来将我的集合类型映射到其他集合类型

我读了这篇文章,但从那以后事情似乎有了一些变化,我遗漏了一些细节。我也翻遍了集合的源代码,但我不确定它是否非常一致

理想情况下,我希望看到的是一个实践教程,它告诉我一步一步地只是我需要的位,或者一个所有细节的广泛描述,这样我就可以判断自己需要哪些位。我喜欢《Scala编程》中关于对象平等的一章

但是,我非常感谢任何文档或示例的指点,它们可以帮助我更好地理解新集合的设计。

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

谢谢,卢卡斯,我也会读到这篇文章。另请参阅“创建自定义可遍历实现”,来自Jesse Eichar和“Daily scala”博客)感谢指针,Martin,我将研究位集。它似乎比SortedSet更清晰。我实际上想写的是建立在集合之上的东西,但它独立于集合的任何实现。然后,我需要另一个类,通过将它与一组实现相结合来实现我的trait。我想这里的选择是混合还是前进。