关于如何扩展Scala集合的This question将我引向了this answer,它是从SetProxy
而不是Set
扩展的。但自那以后,SetProxy
就遭到了反对!文档中说:“(自从2.11.0版以来)由于缺乏使用和编译器级别的支持,代理被取消了。”
为什么代理没有得到使用和编译器的支持?Scala提供了一种更好的技术来完成同样的事情吗?发现它有致命的缺陷吗?
发布于 2014-06-19 17:51:50
代理不受欢迎,因为它是脆弱的。代理应该将所有调用转发给其他实现。但是,如果您向Set层次结构添加了一个新方法--谁会记得将它添加到SetProxy并确保它指向它应该指向的位置呢?
在实践中,没有一种很好的方法来验证代理是否确实正确运行。因此,我们做出了这样的决定:与其拥有看上去可行但实际上不再有功能的东西,不如完全没有这个功能。编译器对代理的支持可能使维护健壮的代理变得足够容易,但手动方法只是不够健壮。
https://stackoverflow.com/questions/24312563
复制相似问题