Я всегда думал, что макро декларации и реализации должны быть определены как в учебниках:Scala реализация учащемуся макро
object Impl {
def m(c: Context)(body: c.Expr[Unit]): c.Expr[T] = ???
}
class Usage {
def m(body: Unit): T = macro Impl.m = ???
}
Однако теперь я наткнулся на:
class RecordMacros(val c: Context) {
import c.universe._
def apply_impl[Rep: c.WeakTypeTag](method: c.Expr[String])(v: c.Expr[(String, Any)]*): c.Expr[Any] = ???
}
Источник: https://github.com/TiarkRompf/virtualization-lms-core/blob/macro-trans/src/common/Records.scala
В чем разница, реферирование контекста из каждого метода? Кроме того, класс, кажется, не создается, прежде чем метод будет доступен. Спасибо
Спасибо, я думаю, что я не сделал правильные слова – cbastin