2
我有一個基礎特徵如何爲scala課堂建造廢料樣板文件?
trait MyClass{
def items: List[MyClass]
def op(c: MyClass): MyClass
}
和幾個具體的子類型。
我希望每個子類型都從父特徵實現此方法op
,但實現中的唯一區別是它們正在構造哪個類。
class Class1(override val items: List[MyClass]) extends MyClass = {
def op(c: MyClass): MyClass = new Class1(items.map{_.op(c)})
//other stuff
}
class Class2(override val items: List[MyClass]) extends MyClass = {
def op(c: MyClass): MyClass = new Class2(items.map{_.op(c)})
//other stuff
}
class Class3(override val items: List[MyClass]) extends MyClass = {
def op(c: MyClass): MyClass = new Class3(items.map{_.op(c)})
//other stuff
}
這感覺非常多餘,我覺得好像應該有更好的辦法。我看過一些類似的情況,似乎人們訴諸運行時反射來找到正確的構造函數。
有沒有辦法在編譯時自動生成這個樣板文件?
謝謝。