我想制作以下示例,以便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
目前有办法做到这一点吗?如果没有,为什么不呢?
请记住,一只好狗在有衣领时不应该小心。
答案 0 :(得分: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,也可以在实例化Dog的位置覆盖它。