gpt4 book ai didi

scala - 只允许在同一个包内继承

转载 作者:行者123 更新时间:2023-12-01 01:01:27 25 4
gpt4 key购买 nike

我有一个特征,它将具有有限数量的子类。起初我使用 sealed修饰符并在同一文件中定义特征及其所有子类。类增长后,我决定将它们重构为单独的文件,但是一旦我这样做了,我就不能再使用 sealed由于密封特征的所有子类必须位于同一文件中的约束,因此对特征进行修饰符。

在 Scala 中,是否有类似的方法可以在同一个包中跨单独的文件具有有限数量的特征子类,同时在进行详尽的模式匹配时仍然获得密封特征的编译时优势?

最佳答案

密封是要求进行详尽检查的唯一方法。但是,您可以在单独的文件中定义包私有(private)特征 AGuts、BGuts、CGuts 等,然后像以前一样在一个文件中创建密封的子类 A、B、C 等,但混合在其他地方定义的这些胆量中。

sealed abstract class Thing
class A extends Thing with AGuts
class B extends Thing with BGuts
...

关于scala - 只允许在同一个包内继承,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22976795/

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