2011-07-09 163 views
2

局部變量我有一個階等級:定義斯卡拉構造

class Foo { 

    def this(st: String) { 
     var baz = List[String]() 
     var jaz = "one" + st 
     // more code logic 


    } 

} 

首先上面的代碼不能編譯。其次,我想baz和jaz是上面的單獨構造函數的局部變量,而不是實例變量。

如何解決這個問題?

+2

http://stackoverflow.com/q/194812/203968有一些免費的斯卡拉書籍在其中閱讀其中之一。例如http://www.artima.com/pins1ed/ – oluies

+0

@oluies老兄它就像一個金礦! thx ... – agilesteel

回答

2

它不編譯,因爲必須在輔助構造函數中發生的第一件事情是調用主構造函數。我不明白第二個問題,因爲你聲明的變量已經是私人的

1

這樣的事情可能是你在找什麼?

class Foo(st: String) { 

    val myInstance = { 
     var baz = List[String]() 
     var jaz = "one" + st 
     jax + baz.mkString(":") 
    } 
} 

類的主體是構造。如果你想擁有一些臨時值,你可以用你想要的任何東西來聲明一個塊;該塊可以返回一個值,並且可以將該值存儲在實例變量中,在這種情況下爲myInstance

+0

如果您需要多次使用一個值,則可以將這些塊合併爲一個並返回一個元組。 – ziggystar