2013-05-01 110 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