0

我知道如果将 Scala 放在同一个文件中,它允许从密封类派生。可能有一个特殊的结构,或者,如果没有,允许这样的东西是有意义的:

sealed[Derived/*, list of allowed to derive*/] class Base
class Derived extends Base

此语法类似于“保护范围”:

class A{
  private[A] val value = 10
}

所以它将允许将派生类放置到单独的文件中。

4

1 回答 1

1

密封类不能添加任何新的子类,除了同一文件中的子类。

设计原因

1 - 程序员只需要担心他们已经知道的子类。

2 - 您将获得更好的编译器支持,因为编译器会用警告消息标记缺失的模式组合。

于 2013-07-14T16:03:14.547 回答