マクロから匿名クラスのメソッドを持つ構造型を取得する
いくつかの型のメンバーまたはメソッドで匿名クラスを定義し、それらのメソッドなどで構造型として静的に型指定されたクラスのインスタンスを作成するマクロを作成するとします。これは、2.10のマクロシステムで可能です。 0、そして型メンバー部分は非常に簡単です: object MacroExample extends ReflectionUtils { import scala.language.experimental.macros import scala.reflect.macros.Context def foo(name: String): Any = macro foo_impl def foo_impl(c: Context)(name: c.Expr[String]) = { import c.universe._ val Literal(Constant(lit: String)) = name.tree val anon = newTypeName(c.fresh) c.Expr(Block( ClassDef( Modifiers(Flag.FINAL), anon, Nil, Template( Nil, emptyValDef, List( constructor(c.universe), TypeDef(Modifiers(), newTypeName(lit), Nil, TypeTree(typeOf[Int])) ) …