我想创建一个像这样的groovy类og脚本:
//...
def slurper = new ConfigSlurper().parse(someFile)
//...
//The exact method declaration
def methodCall(def arg){
//Whatever i want to do
}
//Maybe it is easier with methodMissing
def methodMissing(def args) {
//Whatever i want to do
}
要啜食的文件可能如下所示:
some {
property = methodCall("with arg")
}
问题是我如何将“methodCall”委托给使用configslurper解析的类或脚本?目前,它将为您提供一种方法。
答案 0 :(得分:2)
我认为this blog post有一个例子说明你想做什么。它比methodMissing
更复杂,但可以完成。
答案 1 :(得分:1)
感谢SérgioMichels的链接,我找到了一个解决方案:
public class ScriptWithMethods extends Script {
String scriptText;
public ScriptWithMethods(File file) {
scriptText = file.text
}
public void run() {
GroovyShell shell = new GroovyShell();
Closure closure = shell.evaluate("{it->$string}");
closure.resolveStrategy = Closure.DELEGATE_FIRST
closure.delegate = this
closure.call()
}
def methodCall(def arg){
//Whatever i want to do
}
}
//...
def script = new ScriptWithMethods(scriptText:someFile)
def slurper = new ConfigSlurper().parse(script)
原因你也可以使用“方法缺失”,但这可以在我的用例
中使用