Scala Macros对scala函数库编程人员来说是一项不可或缺的编程工具,可以通过它来解决一些用普通编程或者类层次编程(type level programming)都无法解决的问题,这是因为Scala Macros可以直接对程序进行修改。Scala Macros的工作原理是在程序编译时按照编程人员的意旨对一段程序进行修改产生出一段新的程序。具体过程是:当编译器在对程序进行类型验证(typecheck)时如果发现Macro标记就会将这个Macro的功能实现程序(implementation):一个语法树(AST, Abstract Syntax Tree)结构拉过来在Macro的位置进行替代,然后从这个AST开始继续进行类型验证过程。
下面我们先用个简单的例子来示范分析一下Def Macros的基本原理和使用方法:
1 object modules {2 greeting("john")3 }4 5 object mmacros {6 def greeting(person: String): Unit = macro greetingMacro7 def greetingMacro(c: Context)(person: c.Expr[String]): c.Expr[Unit] = ...8 }以上是Def Macros的标准实现模式。基本原理是这样的:当编译器在编译modu


