首页 文章

如何在groovy脚本中自我发现变量?

提问于
浏览
1

方案是,我可以编写将由另一个应用程序中的脚本引擎执行的groovy代码 .

我唯一知道的是函数名称,它需要一个参数,例如:

def runGroovyCode(name1)

有没有办法从groovy代码本身中找出groovy代码可以使用的其他变量或对象(传入的name1除外)?

希望我清楚地描述这一点 . 它有点像groovy代码自我发现外部变量(数据)在其范围内 .

基本上,我需要更多的数据用于我的groovy代码 . 我需要确认,如果name1是我拥有的唯一数据,或者可能有更多变量,但我不知道他们的名字是什么,否则我无法访问它们 .

我需要找出我的groovy代码将在其中运行的脚本引擎执行环境中可用的变量或对象 .

没有进一步的文件 . 所以基本上,我的groovy代码在黑盒子里运行 .

1 回答

  • 0

    你可以看看groovy.lang.Script课程 . 它有一个名为 binding 的属性,它包含已传递给脚本的所有变量 .

    这是一个例子

    class Main {
        def static SCRIPT = """
                // binding var contains all the bindings of the script
                println binding.variables
            """
    
        public static void main(String[] args) {
            def factory = new ScriptEngineManager();
            def engine = factory.getEngineByName("groovy");
            engine.eval(SCRIPT, new SimpleBindings([param1: 1, param2: 2]));
        }
    }
    

    输出:

    [param1:1, param2:2, context:javax.script.SimpleScriptContext@2f7c2f4f, out:java.io.PrintWriter@6af93788]
    

相关问题