¿Cómo enumero todas las variables definidas en un script maravilloso?
Pregunta
Tengo un script maravilloso con un número desconocido de variables en contexto en el tiempo de ejecución, ¿cómo puedo encontrarlas e imprimir el nombre y el valor de cada una?
Solución
Bueno, si está usando un script simple (donde no usa la palabra clave " def "), las variables que defina se almacenarán en el enlace y puede obtenerlas de esta manera:
foo = "abc"
bar = "def"
if (true) {
baz = "ghi"
this.binding.variables.each {k,v -> println "$k = $v"}
}
Impresiones:
foo = abc
baz = ghi
args = {}
bar = def
No conozco una forma fácil de enumerar a través de las variables definidas con la " def " palabra clave, pero estaré viendo esta pregunta con interés para ver si alguien más sabe cómo hacerlo.
Otros consejos
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"} }
rendimientos
baz = ghi __ = [null, null, null] foo = abc _ = null bar = def
No estoy seguro de lo que significan las variables _, pero estoy seguro de que puedes solucionarlas.