Scala 只初始化一次内部对象
在Scala中,我有以下类:Scala 只初始化一次内部对象,scala,Scala,在Scala中,我有以下类: class A(param: String) { object B { lazy val db = {new D(param)} } } 然后从客户端代码中,我必须多次创建A类对象,但B.db参数只需初始化一次。目前,这不起作用,因为每次创建类a的实例时,它都会创建对象B的新实例 为了增加一点透视效果,B.db对象是Mongo类的一个实例,根据文档,它只需要初始化一次。你会怎么做呢?把它放在一个同伴对象而不是一个内部对象中 object A {
class A(param: String) {
object B {
lazy val db = {new D(param)}
}
}
然后从客户端代码中,我必须多次创建A类对象,但B.db参数只需初始化一次。目前,这不起作用,因为每次创建类a的实例时,它都会创建对象B的新实例
为了增加一点透视效果,B.db对象是Mongo类的一个实例,根据文档,它只需要初始化一次。你会怎么做呢?把它放在一个同伴对象而不是一个内部对象中
object A {
apply(param:String) {
new A
}
lazy val db = {..}
}
class A{
}
该死的…比我快一分钟^^^谢谢,这不起作用,因为类的参数需要由db对象初始化代码访问。诚然,这个问题还不够清楚。您可以在接受参数的对象中添加一个apply。我将编辑回复以表明我知道这一点,但如果您创建
新的A(“1”)
,新的A(“2”)
,等等,并且只创建一个B
,您仍然无法从lazy val初始化代码访问param…@GeorgiosGousios,B
应该使用param
的哪个值?