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 {

在Scala中,我有以下类:

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
的哪个值?