特定使用Eval来解析Groovy的函数调用

时间:2014-09-23 08:57:54

标签: groovy eval

我在groovy中收到了这种格式的字符串:

"function_name(columnOne,columnTwo)"

我需要实现的是调用我在脚本中定义的函数(名为function_name)并传递给函数" columnOne"和" columnTwo"作为字符串。

是否可以通过某种形式的Eval直接实现?无需拆分字符串并提取两个名称?

我的function_name将从数据集中获取这两列,类似于

val1 = a['columnOne']

这就是为什么我需要将该字符序列视为字符串。

任何想法或解决方法?

1 个答案:

答案 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()