グーグルである程度の量の後、私はこのコードは、コードの重複なしで抽象クラスからケースクラスを継承
abstract class Foo(val name: String)
case class Bar(override val name: String, age : Int) extends Foo(name)
def sayHello(f : Foo) = println(f.name)
sayHello(Bar("bar", 10))
を書いたが、それはfooとbarの間でコードの重複のあまりがあることを私に悩まします。すべてのフィールドはFooとBarの間で複製され、その後、Fooのすべてのフィールドを渡す必要があります。
上記のコードを簡潔に書く方法があるのだろうかと思います。
"FooとBarの間でコードの重複が非常に多い" - あなたはFooで1つのフィールドの宣言を意味しますか?私はこれが少し誇張していると思います。 –
私はBarのFooのすべてのフィールドを再定義しなければなりませんでした(BarはFooの子ですが)。その後、Fooにすべてのフィールドを渡す必要がありました。今ここでそれはあまり見えないかもしれませんが、実際の生活で私のFooは8フィールドを持ち、コードは非常に醜いです。 –