【发布时间】:2016-11-10 20:30:36
【问题描述】:
我想在 scala 中实现一个函数,它可以解析源代码的字符串(类对象)并在运行时将其编译为对象。
例如,该功能是我迄今为止尝试过的。我的目标是在运行时环境中编译运行它,我可以使用它的构造函数或它的函数。此代码有运行时错误,但我不明白如何修复反射类错误。谢谢!
object test {
def main(args: Array[String]): Unit = {
val m = universe.runtimeMirror(getClass.getClassLoader)
val tb = m.mkToolBox()
val clazz = tb.compile(tb.parse("class insideclass {\n val model_field = 5\n def insideclass(model: Int) = {\n val model_field = model \n } \n\n def test() : Int = {\n model_field\n }\n\n}\nscala.reflect.classTag[insideclass].runtimeClass"))().asInstanceOf[Class[_]]
val classinside = universe.typeOf[Class[_]].typeSymbol.asClass
val ctor = universe.typeOf[Class[_]].declaration(universe.nme.CONSTRUCTOR).asMethod
val cm=m.reflectClass(classinside)
val ctorm=cm.reflectConstructor(ctor)
println(ctorm(10).test())
}
}
【问题讨论】:
标签: scala