已移除:類別陰影
到目前為止,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 編譯器會強制您重新命名內部類別,使其名稱不同。