首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >scala中具有不可变参数的特征

scala中具有不可变参数的特征
EN

Stack Overflow用户
提问于 2013-05-01 23:49:37
回答 1查看 697关注 0票数 1

我想要做下面的例子,这样就可以使Collar是不可变的

代码语言:javascript
复制
  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)

然而,当我尝试像这样的东西时

代码语言:javascript
复制
  trait Collar(val text:String){
  }

我得到了编译时错误

代码语言:javascript
复制
traits or objects may not have parameters

目前有没有办法做到这一点?若否,原因为何?

记住,一只好狗不应该在意它是否有项圈。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-05-02 02:55:27

根本不确定你真正的问题是什么,但也许这就是你想要的:

代码语言:javascript
复制
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的地方覆盖它。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16321538

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档