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 foo = "abc"
def bar = "def"

如果真实) {
    baz =“吉”
    this.binding.variables.each {k,v -> println "$k = $v"}
}

产量

baz = ghi
__ = [空,空,空]
foo = abc
_ = 空
酒吧 = 定义

我不确定 _-variables 表示什么,但我相信你可以解决它们。

于 2008-11-15T22:23:10.360 回答
0

Groovy 对象包含方法 - dump() https://docs.groovy-lang.org/latest/html/groovy-jdk/java/lang/Object.html

String  dump()
Generates a detailed dump string of an object showing its class, hashCode and fields.

例子:

class MyClass {
    def foo = "abc"
    def bar = "def"
}


println(new MyClass().dump())

标准输出:<MyClass@1fa268de foo=abc bar=def>

于 2020-12-29T14:21:26.110 回答