Scala的MapLike,ListLike,SeqLike等每个如何与Map,List,Seq进行比较?

时间:2012-07-12 00:27:32

标签: scala collections traits

有人可以帮我理解Scala在集合API中的各种“喜欢”特征。我一直在阅读并试图比较每一个没有运气。我想我可以看到Map,例如,扩展MapLike - 添加2个具体方法。但这引出了为什么要这样做的问题?为什么不在Collections API中使用1个Map特征而不是Map和MapLike?

谢谢!

1 个答案:

答案 0 :(得分:15)

这些详细信息的最佳来源是Martin Odersky and Lex Spoon's "What's New in Scala 2.8: The Architecture of Scala Collections"

  

Scala集合库避免了代码重复并实现了   通过使用通用构造函数和遍历来实现“相同结果类型”原则   在所谓的实现特征中的集合。这些特质   以Like后缀命名;例如,IndexedSeqLike就是   IndexedSeq的实施特征,同样地,   TraversableLikeTraversable的实施特征。   诸如TraversableIndexedSeq之类的集合类继承了所有   他们从这些特征中具体实现方法。   实现特征有两个类型参数,而不是一个   正常的集合。它们不仅可以在集合中进行参数化   元素类型,也是集合的表示类型,   即。,基础集合的类型,例如Seq[I]List[T] ......

如果您想将自己的集合类与Collections API集成,或者您只是想更深入地了解库的工作方式,那么整篇文章非常有用。

相关问题