我在文本文件中有脚本application.txt
application {
title "Template application"
settings {}
}
我像这样评估了
def application = new MainForm()
Binding binding = new Binding()
binding.setVariable("application", application)
GroovyShell shell = new GroovyShell(binding)
evaluate(new File("application.txt"))
我的 MainForm
对象包含这样的代码
class MainForm {
def call(Closure cl) {
cl.delegate = this
cl()
}
def methodMissing(String name, args) {
if (name == "title") {
....
} else {
....
}
}
}
,但我决定摆脱文本文件中的不超级application {}
设施,只留下平原
title "Template application"
settings {}
我使用的代码不再起作用,给我 missing method
异常。
def application = new MainForm()
Binding binding = new Binding()
binding.setVariable("application", application)
GroovyShell shell = new GroovyShell(binding)
evaluate(new File("application.txt"))
我应该如何更改此代码以使我的新方法起作用?(基本上,我想评估代码,如application
)
我发现的唯一解决方案就是这样
http://jorgemanrubia.com/2009/10/10/evaluation-code-dynamicaly-innamicaly-ingroovy/
将new File().text
包装到closure
中,然后将其委派给对象