2013-05-01 90 views
1

不變paramiters我要讓下面的例子,使領是不可改變的性狀與斯卡拉

trait Collar{ 
    var text:String=""; 
    } 

    class dog(val name:String){ 
    def bark()= ... 
    } 

    val snoopy = new dog("snoopy") with Collar; 
    snoopy.text="charley's dog"; 
    println(snoopy.text) 

然而,當我嘗試像

trait Collar(val text:String){ 
    } 

我得到的編譯時錯誤

traits or objects may not have parameters 

目前有一種方法可以做到這一點嗎?如果不是,爲什麼不呢?

請記住,一隻好狗不應該在乎它何時有一個領子。

回答

2

不能肯定你的真正的問題是什麼,但也許這是你在找什麼:

trait Collar{ 
    val tagText: String // 'val', not 'var'; left undefined here 
} 

class Dog(val name:String) { 
    def bark()= ... 
} 

val snoopy = new Dog("snoopy") with Collar { 
    val tagText= "charley's dog" 
} 
println(snoopy.tagText) 

另外,Collar.tagText可以用初始/默認值設定,也可以覆蓋狗被實例化。

+0

這正是我所期待的。謝謝! – user833970 2013-05-01 20:49:03