我是
scala宏的新手,我正在使用
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宏做到这一点?或者有另一种方法来实现这一目标吗?