我想完成一些与标准 mixin 有点不同的事情。我想构建一个特征,其新字段是根据它扩展的类(或特征)的字段计算的。
例如,如果我有这样的课程:
class Point {
var x: Int = 0
var y: Int = 0
}
我想制作一个这样的课程:
class Point' {
var x: Int = 0
var y: Int = 0
var myx: Int = 0
var myy: Int = 0
}
我希望能够编写一个函数来计算字段名称myx
,myy
然后使用特征将它们混合到类中。这是我想做的一些虚构的伪Scala:
def addMy(cls: Class) {
newFields = cls.fields.map( f => createField("my" + f.name, f.type) )
myTrait = createTrait(newFields)
extendClass(cls, myTrait)
}