2011-04-24 112 views
16

我想将一个特征用作案例类的混搭。具有Mixin特征的Scala案例类

case class Team(name:String) 

trait WinStreak{} 

,我想用它像这样:

val team = Team("name") with WinStreak 

显然,我不能这样做。这是因为case类使用伴随对象来创建你的类的一个实例吗?我知道另一种解决方案是扩展我的类def的特性,但我想知道它是否有可能创建混合风格。

回答

26

因为Team("name")实际上是一个调用Team.apply("name")的方法,它在apply方法内部创建对象。

创建使用new关键字应该做的伎俩对象:

case class Team(name:String) 
trait WinStreak{} 

val x = new Team("name") with WinStreak 
+1

好点。我刚刚意识到,在使用case类时,您不能使用私有构造函数,并且不允许访问构造函数......感谢您指出这一点。 – 2011-04-24 13:29:37