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
}
这感觉非常多余,我觉得好像应该有更好的办法。我看过一些类似的情况,似乎人们诉诸运行时反射来找到正确的构造函数。
有没有办法在编译时自动生成这个样板文件?
谢谢。