2016-11-12 88 views
3

獲得用於以下類編譯時間錯誤在同一文件訪問構造可變

class FancyGreeting (greeting: String) { 
    //private var greeting: String=_; 

    def greet() = { 
     println("greeting in class" + greeting) 
    } 
} 

object FancyGreeting { 

    def privateGreeting(f:FancyGreeting) : String = { 
     f.greeting; 
    } 
} 

錯誤:值問候不是this.FancyGreeting f.greeting成員;

同樣的工作,如果我使用私有變量問候代替構造

+0

相反評論感謝兩個答案,你應該驗證一個是最好的回答你的問題。這樣問題就會被關閉。如果他們幫助你也可以投票。 – JonesV

回答

1

的你應該寫class FancyGreeting(private var greeting: String) {如果你想有相同的行爲,當您使用您註釋掉行。您編寫它的方式(即class FancyGreeting(greeting: String) {)僅將greeting作爲構造函數的參數,而不會將其作爲屬性。

這就是說,你不應該用「;」結束Scala中的行。此外,如果可以的話,通常使用valvar更好。

注意:this answer對您可能感興趣。

+0

謝謝。有道理 – Shamsur

0

你需要表示構造函數的參數作爲變量,像這樣:

class FancyGreeting (val greeting: String) { 
    //private var greeting: String=_; 

    def greet() = { 
     println("greeting in class" + greeting) 
    } 
} 

object FancyGreeting { 

    def privateGreeting(f:FancyGreeting) : String = { 
     f.greeting; 
    } 
} 
+0

謝謝你的幫助 – Shamsur