gpt4 book ai didi

scala - Scala 集合转发器和代理的用例

转载 作者:行者123 更新时间:2023-12-04 15:26:44 27 4
gpt4 key购买 nike

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

在哪些情况下,我会更喜欢其中一种类型而不是另一种?转发器为何以及何时有用?如果它们有用,为什么没有 MapForwarderSetForwarder ?

我假设如果想要使用其他方法为集合构建包装器或拉皮条标准集合,则最常使用代理。

最佳答案

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

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

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

关于scala - Scala 集合转发器和代理的用例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5737534/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com