仅初始化内部对象一次

Geo*_*ios 2 scala

在Scala中,我有以下类:

class A(param: String) {
  object B {
    lazy val db = {new D(param)}
  }
}
Run Code Online (Sandbox Code Playgroud)

然后从客户端代码我必须多次创建A类对象,但只能初始化一次B.db参数.目前,这不起作用,因为它将每次创建对象B的新实例并创建类A的实例.

为了添加一些透视图,B.db对象是Mongo类的一个实例,根据文档需要初始化一次.你会怎么做?

Arn*_*-Oz 8

将它放在伴侣对象中而不是内部对象中

object A {
   apply(param:String) {
      new A             
   }

   lazy val db = {..}
}
class A{

}
Run Code Online (Sandbox Code Playgroud)

  • @GeorgiosGousios如果你创建`new A("1")`,`new A("2")`等,只有一个`B`,`pa`应该使用`param`的值? (4认同)