在scala中,同一作用域中的object
和trait
可以具有相同的名称。但是同一范围内的class
和trait
不能具有相同的名称。那是为什么?
答案 0 :(得分:4)
您可以将类和特征视为类型,将对象视为值。您可以始终在同一范围内拥有类型和值,而不会产生混淆:
trait Test {
type X
val X: Any
}
以下的工作没有成功:
trait Test {
type X
trait X
}
这两个:
trait Test {
object X
val X: Any
}
对象X
的类型为X.type
(不是X
)。