2013-07-03 24 views
0

我想訪問一個私有的構造函數的參數,而無需使用可變的變量:獲取參數,從一個私有構造函數

class Class1 { 

    val strArgPublic = // get strArg argument from the private constructor. How? 

    private def this(strArg: String) = { 
    //..... 
    } 
} 

我不僅希望得到strArg並返回,但改變它一點點並返回一個新的修改後的副本。

我該怎麼做?

+0

修改它的私有構造然後將其傳遞給主構造函數。 –

+0

主構造函數應該是所有構造函數中最通用的。如果你想保持類的主體儘可能的乾淨,你可以用工廠方法代替構造函數來使用伴隨對象。 –

回答

3

你的課堂不僅有私人構造函數。還有一個公共構造函數。你應該決定在公共構造函數之後什麼值爲strArgPublic。如果有應該沒有公共的構造函數,你應該定義你的類是這樣的:

class Class1 private(strArg: String) { 
    val strArgPublic = transform(strArg) 
} 

如果應該有一個無參數的公共構造函數,你可以定義一個作爲輔助構造:

class Class1 private(strArg: String) { 
    val strArgPublic = transform(strArg) 
    def this() = this("default") 
} 
+0

有什麼話說那裏還有一個公共構造函數?只是說'class Class1 {...}'暗示那個? –

+0

不應該有公共構造函數。 –

+0

@MariusKavansky:每個Scala類中總是有一個主構造函數。 – senia

相關問題