2008-10-19 15 views

Respuesta

20

Bueno, si usted está utilizando un simple script (en el que no se utiliza la palabra clave "def"), las variables que se definen se almacenará en la unión y se puede llegar a ellos de esta manera:

foo = "abc" 
bar = "def" 

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

Lienzo:

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

no estoy al tanto de una manera fácil para enumerar las variables definidas con la palabra clave "def", pero voy a estar viendo a esta pregunta con interés para ver si otra persona Sabe cómo.

+0

'this.binding.variables.each {k, v -> println" $ {v.class} $ k = $ v "}' Si desea ver los tipos también – smac89

4

En realidad, la respuesta de Ted también funcionará para las variables definidas.

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

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

produce

 
baz = ghi 
__ = [null, null, null] 
foo = abc 
_ = null 
bar = def 

No estoy seguro de lo que significan las _ variables, pero estoy seguro de que puede trabajar alrededor de ellos.

+0

'_' es el resultado de la Última expresión evaluada, al menos en groovysh (y en REPL de Python y un número de otros). No estoy seguro de '__', aunque podría ver que se trata de algún otro tipo de historial de evaluación. –

+0

Entonces, esto no funciona para mí. 'def foo =" asdgasgf "; this.binding.variables.each {k, v -> println "$ k $ v"} 'solo imprime' args [] '. – jonnybot

Cuestiones relacionadas