评估脚本针对对象



我在文本文件中有脚本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中,然后将其委派给对象

最新更新