了解 Scala 中的命名约定

Understanding naming conventions in Scala

在scala中,同一作用域中的objecttrait可以重名。但是同一范围内的classtrait不能重名。这是为什么?

您可以将 class 和特征视为 类型 ,将对象视为 。您始终可以在同一范围内拥有一个类型和一个值而不会混淆:

trait Test {
  type X
  val X: Any
}

以下将不起作用:

trait Test {
  type X
  trait X
}

这两者都不是:

trait Test {
  object X
  val X: Any
}

对象 X 的类型是 X.type(不是 X)。