已删除:Class 遮蔽
到目前为止,Scala 允许这样的模式:
class Base {
class Ops { ... }
}
class Sub extends Base {
class Ops { ... }
}
Scala 3 会拒绝这段代码,并显示错误消息:
6 | class Ops { }
| ^
|class Ops cannot have the same name as class Ops in class Base
| -- class definitions cannot be overridden
主要问题是这两个 Ops
看起来像是其中一个覆盖了另一个,但 Scala 2 中的类不能真的覆盖。 为了保持干净(以及其内部操作的一致性),Scala 3 编译器强制您重命名内部类,使它们的名称不同。