soc*_*soc 7 import macros scala class scala-macros
我有一个表示包,对象和类的符号列表,并希望在宏上下文中导入它们.
对于包和对象,这将意味着通配符导入,对于类,它将意味着"标准"导入.
给定一个List[Symbol]由some.package,some.Class和some.Object,我将如何正确导入这些,我怎么能决定是否"标准"或通配符导入,需要使用?
我目前的做法是:
def importPackageOrModuleOrClass(sym: Symbol): Import =
if (sym.isPackage || sym.isModule) // e. g. import scala._, scala.Predef
gen.mkWildcardImport(sym)
else // e. g. import java.lang.String
gen.mkImport(sym.enclosingPackage, sym.name, sym.name) // <--- ?????
Run Code Online (Sandbox Code Playgroud)
包/模块导入有效,但类导入虽然看起来不正确.
您需要像这样获取“TermName” ......
def importPackageOrModuleOrClass(sym: Symbol): Import =
if (sym.isPackage || sym.isModule)
gen.mkWildcardImport(sym)
else
gen.mkImport(sym.enclosingPackage, sym.name.toTermName, sym.name.toTermName)
Run Code Online (Sandbox Code Playgroud)