Scala集合转发器和代理的使用案例

时间:2011-04-20 22:50:42

标签: scala scala-2.8 scala-collections

Scala的集合库包含转发器IterableForwarderTraversableForwarderSeqForwarder以及代理IterableProxyMapProxySeqProxy,{{3转发器和代理都将集合方法委托给底层集合对象。},SetProxy等。这两者之间的主要区别在于转发器不会转发会创建相同类型的新集合对象的调用。

在哪种情况下,我更喜欢这些类型中的一种?货运代理为何以及何时有用?如果它们有用,为什么没有MapForwarderSetForwarder

我假设如果想要使用其他方法为集合构建包装器或者对标准集合进行操作,则最常使用代理。

1 个答案:

答案 0 :(得分:4)

我认为this answer提供了一般关于Proxy的一些背景信息(关于包装和拉皮条的假设是正确的。)

据我所知,Proxy的子类型更适合最终用户。使用Proxy时,代理对象和self对象将相等用于所有意图和目的。我认为这实际上是主要的区别。如果该假设不成立,请不要使用Proxy

转发器特征似乎只用于支持ListBuffer,如果需要推出构建在CanBuildFrom之上的自己的集合类,可能更合适基础设施。所以我想说它更适合图书馆作家,其中图书馆基于2.8集合设计。