Подтвердить что ты не робот

Scala классы case со свойствами Mixin

Я пытаюсь использовать признак как mixin с классом case.

case class Team(name:String)

trait WinStreak{}

и я хотел бы использовать его так:

val team = Team("name") with WinStreak

По-видимому, я не могу этого сделать. Это потому, что классы case используют объект-компаньон для создания экземпляра вашего класса? Я знаю, что другим решением было бы просто расширить признак в моем классе def, но я хотел бы знать, возможно ли его создать стиль mixin.

4b9b3361

Ответ 1

Потому что Team("name") - это фактически вызов метода Team.apply("name"), который создает объект внутри метода apply.

Создайте объект с помощью ключевого слова new, чтобы сделать трюк:

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

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