2017-01-28 68 views
-1

我正在測試一個簡單的scala程序如何做自定義setter。 但它給我編譯時錯誤。scala Ide自定義setter錯誤

class Duck1 { 
    private var privateAge = 10 
    def age() = privateAge 
    def age_ = (value : Int) { if(value > privateAge) privateAge = value} 
} 

object CustomGetter extends App { 
    val f = new Duck1 
    //f.age = 20 
    println(f.age) 
} 

def age_ = (value : Int) { if(value > privateAge) privateAge = value} 是給錯誤。

+2

當你有錯誤時,你應該包括確切的錯誤文本以及引起它的行。查看錯誤可以更容易地識別問題。 – puhlen

+0

即使可能/語法上沒問題,在這種微不足道的情況下使用可變性並不是Scala通常的慣例 – cchantep

回答

0

這是正確的語法:

def age_= (value : Int): Unit = { if(value > privateAge) privateAge = value} 

的方法名稱應該是age_,並有一個=簽名後失蹤。

您也可以省略括號def age() = privateAge

最後,我同意的意見。你應該在你的問題中包含錯誤信息。