比如说我有
class foo{
def bar = 7
}
class qaz{
//Here I want to have something like: val foobar = bar
//What I don't want to have is val foobar = (new foo).bar
}
我怎样才能做到这一点?
答案 0 :(得分:8)
您可以使用foo
的配套对象来定义bar
。
然后您只需将其导入qaz
:
// in foo.scala
object foo {
def bar = 7
}
class foo {
// whatever for foo class
}
// in qaz.scala
import mypackage.foo.bar
class qaz {
val foobar = bar // it works!
}
答案 1 :(得分:1)
有两种方法可以实现这一目标:
使用随播对象
第二种方法,即需要包含伴侣对象的方法,如Jean已经实现的那样:
pack
通过创建一个case类而不是一个普通类,为你创建了很多样板代码,其中一个是apply方法的生成,因此你不需要使用new关键字来创建一个新的实例班上的。
class foo {
// whatever for foo class
}
//Companion Object
object foo {
def bar = 7
}
class qaz {
val foobar = bar
}
这两种方法都是一种语法糖,但在后面做同样的事情,即在伴侣对象中使用apply函数。 请尝试this了解详情。