20

実行時にコンテキスト内の変数の数が不明な groovy スクリプトがあります。それらをすべて見つけて、それぞれの名前と値を出力するにはどうすればよいですか?

4

3 に答える 3

22

簡単なスクリプト ("def" キーワードを使用しない場合) を使用している場合、定義した変数はバインドに格納され、次のように取得できます。

foo = "abc"
bar = "def"

if (true) {
    baz = "ghi"
    this.binding.variables.each {k,v -> println "$k = $v"}
}

版画:

    foo = abc 
    baz = ghi 
    args = {} 
    bar = def

「def」キーワードで定義された変数を列挙する簡単な方法はわかりませんが、この質問を興味深く見て、他の誰かがその方法を知っているかどうかを確認します.

于 2008-10-19T15:08:23.997 に答える
4

実際、Tedの答えは'def'ed変数に対しても機能します。

def foo = "abc"
def bar = "def"

真であれば) {
    baz = "ghi"
    this.binding.variables.each {k、v-> println "$ k = $ v"}
}

収量

baz = ghi
__ = [null、null、null]
foo = abc
_ = null
バー=def

_-変数が何を意味するのかはわかりませんが、回避できると確信しています。

于 2008-11-15T22:23:10.360 に答える