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

Fra*_*mas 6 scala scala-2.8 scala-collections

Scala的集合库包含了代理IterableForwarder,TraversableForwarder,SeqForwarder和代理一样IterableProxy,MapProxy,SeqProxy,SetProxy,TraversableProxy,等代理和代理两种委托收集方法到底层集合对象.这两者之间的主要区别在于转发器不会转发会创建相同类型的新集合对象的调用.

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

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

huy*_*hjl 4

我认为这个答案提供了一些一般背景Proxy(并且您关于包装器和拉皮条的假设是正确的)。

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

转发特征似乎仅用于支持ListBuffer,并且如果需要推出构建在CanBuildFrom基础设施之上的自己的集合类,则可能更合适。所以我想说它更适合图书馆编写者,该图书馆基于 2.8 集合设计。