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

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

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

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

解决方法

我认为 this answer提供了一般关于代理的一些上下文(你对包装和拉皮条的假设是正确的).

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

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

相关文章

共收录Twitter的14款开源软件,第1页Twitter的Emoji表情 Tw...
Java和Scala中关于==的区别Java:==比较两个变量本身的值,即...
本篇内容主要讲解“Scala怎么使用”,感兴趣的朋友不妨来看看...
这篇文章主要介绍“Scala是一种什么语言”,在日常操作中,相...
这篇文章主要介绍“Scala Trait怎么使用”,在日常操作中,相...
这篇文章主要介绍“Scala类型检查与模式匹配怎么使用”,在日...