Что я пробовал:Как я могу реализовать класс case с несколькими отдельными общими интерфейсами?
object LolTest {
trait Foo {
def foo: Int // getter
def foo(i: Int): Foo // setter
}
trait Bar {
def bar: String // getter
def bar(s: String): Bar // setter
}
case class Buzz(foo: Int, bar: String) extends Foo with Bar {
override def foo(i: Int): Buzz = copy(foo = i)
override def bar(s: String): Buzz = copy(bar = s)
}
}
Но мой реальный класс должен иметь много полей (около 10). И необходимость реализовать сеттеры (обновления, трансформаторы?) В конкретном классе вместо черт выглядит ... неправильно. И у меня все больше и больше проблем, пытаясь добавить к классу разные настройки.
Буду признателен за эту проблему.
Почему бы просто не использовать класс случая с того, что десятью полями? https://github.com/alexandru/scala-best-practices/blob/master/sections/2-language-rules.md#24-should-not-define-useless-traits – leshkin
@leshkin: чтобы инкапсулировать разные "виды «класса от разных пользователей. «Программа для интерфейса» и все такое. –