2015-10-08 5 views
2

Я всегда думал, что макро декларации и реализации должны быть определены как в учебниках: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

В чем разница, реферирование контекста из каждого метода? Кроме того, класс, кажется, не создается, прежде чем метод будет доступен. Спасибо

ответ

 Смежные вопросы

  • Нет связанных вопросов^_^