我正在尝试使用特征作为与案例类的混合。
case class Team(name:String)
trait WinStreak{}
我想这样使用它:
val team = Team("name") with WinStreak
显然我不能这样做。这是因为案例类使用伴侣对象来创建类的实例吗?我知道另一种解决方案是在我的类def中扩展特性,但我想知道是否可以创建它的mixin风格。
答案 0 :(得分:26)
因为Team("name")
实际上是对Team.apply("name")
的方法调用,它会在apply方法中创建对象。
使用new
关键字创建对象应该可以解决问题:
case class Team(name:String)
trait WinStreak{}
val x = new Team("name") with WinStreak