在 GitHub 上编辑此页面

已删除:类阴影

Scala 2 迄今为止允许以下模式

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 编译器强制您重命名内部类,以便它们的名称不同。

更多细节