如何枚举groovy脚本中所有定义的变量
我有一个groovy脚本,在运行时上下文中包含未知数量的变量,如何找到它们并打印每个变量的名称和值?如果您使用一个简单的脚本(不使用“def”关键字),那么您定义的变量将存储在绑定中,您可以这样获得它们:如何枚举groovy脚本中所有定义的变量,groovy,scripting,Groovy,Scripting,我有一个groovy脚本,在运行时上下文中包含未知数量的变量,如何找到它们并打印每个变量的名称和值?如果您使用一个简单的脚本(不使用“def”关键字),那么您定义的变量将存储在绑定中,您可以这样获得它们: foo = "abc" bar = "def" if (true) { baz = "ghi" this.binding.variables.each {k,v -> println "$k = $v"} } 印刷品: foo = abc baz =
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”关键字定义的变量,但我会饶有兴趣地关注这个问题,看看是否有其他人知道如何枚举。实际上,Ted的答案也适用于“def”定义的变量 def foo = "abc" def bar = "def" if (true) { baz = "ghi" this.binding.variables.each {k,v -> println "$k = $v"} } 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 bar = def baz=ghi __=[零,零,零] foo=abc _=null bar=def
我不确定这些变量意味着什么,但我相信您可以解决它们。Groovy对象包含方法-
dump()
例如:
class MyClass {
def foo = "abc"
def bar = "def"
}
println(new MyClass().dump())
stdout:
.
是最后一个计算表达式的结果,至少在groovysh(以及Python的REPL和其他许多表达式)中是如此。我不太清楚\uuuuu
,虽然我可以看到它是其他类型的评估历史。所以,这对我不适用<代码>def foo=“asdgasgf”;this.binding.variables.each{k,v->println“$k$v”}仅打印出args[]
this.binding.variables.each{k,v->println“${v.class}$k=$v”}
如果您也想查看类型的话
class MyClass {
def foo = "abc"
def bar = "def"
}
println(new MyClass().dump())