首页 文章

具有Mixin特征的Scala案例类

提问于
浏览
16

我试图使用特征作为一个案例类的混合 .

case class Team(name:String)

trait WinStreak{}

我想像这样使用它:

val team = Team("name") with WinStreak

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

1 回答

  • 26

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

    使用 new 关键字创建对象应该做的诀窍:

    case class Team(name:String)
    trait WinStreak{}
    
    val x = new Team("name") with WinStreak
    

相关问题