我是新来斯卡拉宏和我使用的Scala 2.10.0-RC3。
我想编写一个宏,增加了一个功能的类。 用法示例:
trait MyTrait {
def addF = macro { /*add "def f = 3" to class*/ }
}
class MyClass extends MyTrait {
addF //Adds the "def f" to MyClass
}
object Main {
val t = new MyClass
assert(t.f==3)
}
我需要这在下面的情形。 我第一次尝试没有使用宏,但没有工作,因为我不能继承同一性状的两倍。
trait AddF[T] {
def f(t: T) { /* ...do sthg ... */ }
}
class MyClass extends AddF[Int] with AddF[String]
随着宏观解决方案,我可以写
class MyClass extends MyTrait {
addF[Int]()
addF[String]()
}
有没有一种方法使用Scala宏来做到这一点? 还是有另一种方式来实现这一目标?