了解 Scala 中的命名约定
Understanding naming conventions in Scala
在scala中,同一作用域中的object
和trait
可以重名。但是同一范围内的class
和trait
不能重名。这是为什么?
您可以将 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
)。
在scala中,同一作用域中的object
和trait
可以重名。但是同一范围内的class
和trait
不能重名。这是为什么?
您可以将 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
)。