Это может или не может работать для вас.Вполне возможно, что это работает только в сценариях.
def pprint(def varClosure) {
s=varClosure()
print("\"$s\" = " + binding.variables[s])
}
test = 15
pprint{"test"}
Я использовал замыкание, чтобы оно передавало текущий контекст (для получения привязок).Вы можете перебирать замыкание различными способами - например, если вы передадите pprint {["test", "anotherVar"]}, вы можете использовать его вместо println:
s.each() { print("\"$it\" = ${binding.variables[s]},\t") }
println ""
Это дастдовольно близко к желаемым результатам.
Если вы хотите сделать это с классным классом, хеш привязок не существует.Существует хэш свойств, но он обращается только к свойствам объекта (не все переменные доступны для замыкания - другими словами, он пропустит переменные, определенные в методе и параметрах).
Возможно, закрытие имеет хешвсе доступные ему свойства - это было бы идеально.Я посмотрю позже.
Также есть метод dump () для объекта, который вам может понравиться.