2016-07-10 14 views
1

シナリオは、私は別のアプリケーション内のスクリプトエンジンによって実行される素敵なコードを書くことができます。groovyスクリプト内の変数を自己発見する方法は?

私が知っている唯一のことは、関数名であり、それは一つの引数を取り、例えば:

デフrunGroovyCode(NAME1){...}

内から把握する方法がありますgroovyコード自体で、groovyコードで使用できる他のどの変数(name1以外のもの)が使用できますか?

私はこれを明確に説明しました。 Groovyコードは、外部変数(データ)がどのスコープ内にあるのかを自己発見するようなものです。

基本的に、私はグルーヴィーコードのためにもっとデータが必要です。私はname1が私が持っている唯一のデータであるかどうか、あるいは利用可能な変数がもっとあるかもしれないかどうかを確認する必要がありますが、そうでなければ私はそれらの名前にアクセスできません。

このスクリプトエンジン実行環境で使用可能な変数やオブジェクトがGroovyコード内で実行されているかどうかを調べる必要があります。

さらなるドキュメントはありません。基本的に、私のグルーヴィーコードはブラックボックスで実行されています。

答えて

0

groovy.lang.Scriptクラスをご覧ください。スクリプトに渡されたすべての変数を含むbindingというプロパティがあります。

[param1:1, param2:2, context:[email protected], out:[email protected]] 
:ここ

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])); 
    } 
} 

出力例です。

関連する問題