我想要做下面的例子,这样就可以使Collar是不可变的
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目前有没有办法做到这一点?若否,原因为何?
记住,一只好狗不应该在意它是否有项圈。
发布于 2013-05-02 02:55:27
根本不确定你真正的问题是什么,但也许这就是你想要的:
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,也可以在实例化Dog的地方覆盖它。
https://stackoverflow.com/questions/16321538
复制相似问题