【发布时间】:2016-06-05 12:10:02
【问题描述】:
在本文档中:
http://docs.scala-lang.org/overviews/reflection/environment-universes-mirrors.html
Scala 反射宇宙被描述为具有 2 个实现:1 个用于运行时(在 scala.reflect.runtime 下),1 个用于编译时(在 scala.reflect.macro 下)。
但是,我只能通过以下方式访问运行时 Universe:
scala.reflect.runtime.universe
编译时 Universe 包下没有具体的实现。实现和调用它的能力是否故意隐藏,实现由 scala 编译器硬编码?如果是这样,那么在使用 Scala 反射之前强制指定一个 Universe 的原因是什么?
非常感谢您的任何见解。
【问题讨论】:
-
您可以通过从上下文导入宏实现来访问某些编译时 Universe,例如
def macroImpl(c: whitebox.Context)(arg: c.Tree) = { import c.universe._; /* other code */ }
标签: scala scala-reflect