Scala的集合库包含转发器IterableForwarder
,TraversableForwarder
,SeqForwarder
以及代理IterableProxy
,MapProxy
,SeqProxy
,{{3转发器和代理都将集合方法委托给底层集合对象。},SetProxy
等。这两者之间的主要区别在于转发器不会转发会创建相同类型的新集合对象的调用。
在哪种情况下,我更喜欢这些类型中的一种?货运代理为何以及何时有用?如果它们有用,为什么没有MapForwarder
和SetForwarder
?
我假设如果想要使用其他方法为集合构建包装器或者对标准集合进行操作,则最常使用代理。
答案 0 :(得分:4)
我认为this answer提供了一般关于Proxy
的一些背景信息(关于包装和拉皮条的假设是正确的。)
据我所知,Proxy
的子类型更适合最终用户。使用Proxy
时,代理对象和self
对象将相等用于所有意图和目的。我认为这实际上是主要的区别。如果该假设不成立,请不要使用Proxy
。
转发器特征似乎只用于支持ListBuffer
,如果需要推出构建在CanBuildFrom
之上的自己的集合类,可能更合适基础设施。所以我想说它更适合图书馆作家,其中图书馆基于2.8集合设计。