макросы scala: добавление функции в класс
я новичок в макросах 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)
}
Мне нужно это в следующем сценарии. Моя первая попытка нене использовал макросы, но нене могу работать, потому что я не могуt наследуют одну и ту же черту дважды.
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? Или есть другой способ добиться этого?