Scala 为什么不推荐代理?
关于如何扩展Scala集合,我想到了,它从Scala 为什么不推荐代理?,scala,proxy-classes,Scala,Proxy Classes,关于如何扩展Scala集合,我想到了,它从SetProxy扩展而不是Set。但后来被弃用了!文档中说“(自版本2.11.0起)代理因缺乏使用和编译器级支持而被弃用。” 为什么代理没有得到使用和编译器支持?Scala是否为完成同样的任务提供了更好的技术?是否发现它有致命缺陷?代理不推荐使用,因为它很脆弱。代理应该将所有调用转发回其他实现。但是,如果您向集合层次结构添加了一个新方法,会不会有人记得将它添加到SetProxy并确保它指向应该指向的位置 在实践中,没有好的方法来验证代理是否实际正常运行。
SetProxy
扩展而不是Set
。但后来被弃用了!文档中说“(自版本2.11.0起)代理因缺乏使用和编译器级支持而被弃用。”
为什么代理没有得到使用和编译器支持?Scala是否为完成同样的任务提供了更好的技术?是否发现它有致命缺陷?代理不推荐使用,因为它很脆弱。代理应该将所有调用转发回其他实现。但是,如果您向集合层次结构添加了一个新方法,会不会有人记得将它添加到SetProxy并确保它指向应该指向的位置
在实践中,没有好的方法来验证代理是否实际正常运行。因此,我们做出了这样一个决定:与其拥有一些看起来有效但实际上不再有效的功能,不如根本不具备这些功能。编译器对代理的支持可能使维护健壮的代理变得足够容易,但手动方法不够健壮。代理因其脆弱性而被弃用。代理应该将所有调用转发回其他实现。但是,如果您向集合层次结构添加了一个新方法,会不会有人记得将它添加到SetProxy并确保它指向应该指向的位置
在实践中,没有好的方法来验证代理是否实际正常运行。因此,我们做出了这样一个决定:与其拥有一些看起来有效但实际上不再有效的功能,不如根本不具备这些功能。编译器对代理的支持可能使维护健壮的代理变得足够容易,但是手动方法不够健壮。Yikes!我没有意识到代理类是手动维护的。我想他们必须通过某种巧妙的转发机制来工作。Scala是否提供了其他方法来完成代理所做的事情,如我所问的?也许是宏?扩展集合不是一件容易的事。您可能希望新集合上的map返回相同类型的集合,但为此,除了新类之外,还需要
CanBuildFrom
s和YourNewSetLike
。代理不是blackbox宏可以帮助您的,但其他宏可能可以。编译器插件更适合使用,但集合层次结构使用的功能比编译器在试图找到自动解决方案时可以合理预期的要多。我不确定有什么好的解决办法。哎呀!我没有意识到代理类是手动维护的。我想他们必须通过某种巧妙的转发机制来工作。Scala是否提供了其他方法来完成代理所做的事情,如我所问的?也许是宏?扩展集合不是一件容易的事。您可能希望新集合上的map返回相同类型的集合,但为此,除了新类之外,还需要CanBuildFrom
s和YourNewSetLike
。代理不是blackbox宏可以帮助您的,但其他宏可能可以。编译器插件更适合使用,但集合层次结构使用的功能比编译器在试图找到自动解决方案时可以合理预期的要多。我不确定有什么好的解决办法。