具有Mixin特征的Scala案例类

时间:2011-04-24 01:33:56

标签: scala

我正在尝试使用特征作为与案例类的混合。

case class Team(name:String)

trait WinStreak{}

我想这样使用它:

val team = Team("name") with WinStreak

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

1 个答案:

答案 0 :(得分:26)

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

使用new关键字创建对象应该可以解决问题:

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

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