2011-12-15 61 views
2

在Scala中,我有下面的類:初始化內部對象只是一次

class A(param: String) { 
    object B { 
    lazy val db = {new D(param)} 
    } 
} 

,然後從客戶機代碼我要創建類A的對象多次但具有B.db參數只是一次初始化。目前,這不起作用,因爲它會每次創建對象B的新實例,並創建類A的實例。

爲了增加一些觀點,B.db對象是Mongo類的一個實例,它根據文檔需要初始化一次。你會怎麼做呢?

回答

8

把它放在一個同伴對象,而不是內部對象

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

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

} 
+0

該死的......一分鐘打我吧^^ –

+0

謝謝,因爲類是設置了一個param需要是這不會工作,雖然由db對象初始化代碼訪問。誠然,這個問題還不夠清楚。 –

+0

您可以在接受參數的對象中添加apply。我將編輯回覆以顯示 –