可能有人请帮助我理解Scala的各种“象”集合API的特性。 我一直在阅读过并尝试比较每个没有运气。 我想我可以看到,地图例如,扩展MapLike - 加2种的具体方法。 但是,这提出为什么在所有这样做的问题? 为什么不只是有集合API,而不是地图和MapLike在1个地图特质?
谢谢!
可能有人请帮助我理解Scala的各种“象”集合API的特性。 我一直在阅读过并尝试比较每个没有运气。 我想我可以看到,地图例如,扩展MapLike - 加2种的具体方法。 但是,这提出为什么在所有这样做的问题? 为什么不只是有集合API,而不是地图和MapLike在1个地图特质?
谢谢!
对于这些细节的最佳来源是马丁·奥德斯基和Lex勺的“有什么用Scala 2.8的新功能:的Scala集合的建筑” :
斯卡拉集合库避免了重复代码,并通过使用通用的建设者和遍历过所谓的执行特征集合实现了“同一个结果类型”的原则。 这些特质被命名为一个
Like
后缀; 例如,IndexedSeqLike
是实施特质IndexedSeq
,同样,TraversableLike
是实施特质Traversable
。 集合类如Traversable
或IndexedSeq
继承这些性状他们所有的具体方法实现。 实施性状有两种类型的参数,而不是一个正常的集合。 他们参数不但超过了集合的元素类型,也超过了集合的代表性类型 , 即底层集合的类型,如Seq[I]
或List[T]
...
如果你想在自己的集合类与集合API整合整篇文章是非常有用的,或者如果你只是想如何图书馆工作有更深的了解。