使用Google的一定量後,我寫了這個代碼繼承從抽象類的情況下,不類代碼重複
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和酒吧之間重複的代碼。所有的字段都在Foo和Bar之間重複,然後在擴展時必須通過Foo的所有字段。
我不知道是否有一個簡潔的方式來編寫上面的代碼。
「Foo和Bar之間的代碼重複如此之多」 - 您的意思是在'Foo'中聲明一個字段?我認爲這有點誇張。 –
我不得不重新定義Bar中Foo的每個字段(儘管Bar是Foo的孩子),然後我必須在擴展時將每個字段傳遞給Foo。現在這裏可能看起來不多......但在現實生活中,我的Foo有8個字段,代碼看起來非常難看。 –