Scala классы case со свойствами Mixin
Я пытаюсь использовать признак как mixin с классом case.
case class Team(name:String)
trait WinStreak{}
и я хотел бы использовать его так:
val team = Team("name") with WinStreak
По-видимому, я не могу этого сделать. Это потому, что классы case используют объект-компаньон для создания экземпляра вашего класса? Я знаю, что другим решением было бы просто расширить признак в моем классе def, но я хотел бы знать, возможно ли его создать стиль mixin.
Ответы
Ответ 1
Потому что Team("name")
- это фактически вызов метода Team.apply("name")
, который создает объект внутри метода apply.
Создайте объект с помощью ключевого слова new
, чтобы сделать трюк:
case class Team(name:String)
trait WinStreak{}
val x = new Team("name") with WinStreak