我在groovy中收到了这种格式的字符串:
"function_name(columnOne,columnTwo)"
我需要实现的是调用我在脚本中定义的函数(名为function_name)并传递给函数" columnOne"和" columnTwo"作为字符串。
是否可以通过某种形式的Eval直接实现?无需拆分字符串并提取两个名称?
我的function_name将从数据集中获取这两列,类似于
val1 = a['columnOne']
这就是为什么我需要将该字符序列视为字符串。
任何想法或解决方法?
答案 0 :(得分:2)
DelegatingScript
可与propertyMissing
一起使用:
import org.codehaus.groovy.control.CompilerConfiguration
class MyDSL {
// every property missing will just be returned as a string
def propertyMissing(final String name) { name }
// your function with any string arguments
void function_name(final String... args) {
println "Called function_name($args)"
}
}
CompilerConfiguration cc = new CompilerConfiguration()
cc.setScriptBaseClass('groovy.util.DelegatingScript')
GroovyShell sh = new GroovyShell(getClass().classLoader, new Binding(), cc)
DelegatingScript script = (DelegatingScript)sh.parse("function_name(Between,The,Burried,And,Me)")
script.setDelegate(new MyDSL())
script.run()