具有相同名称的 Scala 对象和特征
Scala object and trait having same name
在Scala中,一个class和一个对象可以是companion(同名,同文件)
我看到了 Scala 源代码,其中一个文件中定义了特征和对象,并且两者具有相同的名称,但对象没有扩展特征。
这个风格可以吗?
是的,在这两种情况下 trait 或对象同名对象都成为伴随对象你可以在下面的代码中看到你可以在 class 和 trait 两种情况下访问私有成员
特质
trait Simple {
private def line = "Line"
}
object Simple {
val objTrait = new Simple{}
def lineObj=objTrait.line
}
Simple.lineObj
class
class Simple {
private def line = "Line"
}
object Simple {
val objTrait = new Simple{}
def lineObj=objTrait.line
}
Simple.lineObj
object
的典型用例是用于在 Java 中标记为 static
的方法和字段,如果有帮助的话。
object
没有扩展 trait
/ class
,它伴随着它,因此术语 伴随对象 。
在Scala中,一个class和一个对象可以是companion(同名,同文件)
我看到了 Scala 源代码,其中一个文件中定义了特征和对象,并且两者具有相同的名称,但对象没有扩展特征。
这个风格可以吗?
是的,在这两种情况下 trait 或对象同名对象都成为伴随对象你可以在下面的代码中看到你可以在 class 和 trait 两种情况下访问私有成员
特质
trait Simple {
private def line = "Line"
}
object Simple {
val objTrait = new Simple{}
def lineObj=objTrait.line
}
Simple.lineObj
class
class Simple {
private def line = "Line"
}
object Simple {
val objTrait = new Simple{}
def lineObj=objTrait.line
}
Simple.lineObj
object
的典型用例是用于在 Java 中标记为 static
的方法和字段,如果有帮助的话。
object
没有扩展 trait
/ class
,它伴随着它,因此术语 伴随对象 。