makra scala: Dodaj funkcję do klasy

Jestem nowym użytkownikiem makr Scala i używam scala 2.10.0-RC3.

Chcę napisać makro, które dodaje funkcję do klasy. Przykład użycia:

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)
}

Potrzebuję tego w następującym scenariuszu. Moja pierwsza próba nie używała makr, ale nie działała, ponieważ nie mogę odziedziczyć tej samej cechy dwa razy.

trait AddF[T] {
  def f(t: T) { /* ...do sthg ... */ }
}

class MyClass extends AddF[Int] with AddF[String]

Dzięki rozwiązaniu makro mogłem napisać

class MyClass extends MyTrait {
  addF[Int]()
  addF[String]()
}

Czy można to zrobić za pomocą makr scala? Czy jest inny sposób na osiągnięcie tego?

questionAnswers(2)

yourAnswerToTheQuestion