Groovy Power Print
Groovy有一个power断言,但我想要一个power打印。比如说,Groovy Power Print,groovy,Groovy,Groovy有一个power断言,但我想要一个power打印。比如说, def foo = 'banna5', monkey=7, x=70 println "foo=$foo, monkey=$monkey, x/2=${x/2}" 查看println行中重复的foo、monkey和表达式。。。我要打的是这个 pprint foo, monkey, x/2 这是println或pprintln的输出 foo=banna5, monkey=7, x/2=35 有没有一首小曲已经做到了这一点
def foo = 'banna5', monkey=7, x=70
println "foo=$foo, monkey=$monkey, x/2=${x/2}"
查看println行中重复的foo、monkey和表达式。。。我要打的是这个
pprint foo, monkey, x/2
这是println或pprintln的输出
foo=banna5, monkey=7, x/2=35
有没有一首小曲已经做到了这一点?在Groovy中,没有任何东西可以满足您当前的需求 问题是在打印值时获取变量的名称 powerrassert似乎是通过字节码的AST操作来完成的。请参见,在org.codehaus.groovy.runtime.powerassert包中用几个类来修饰assert方法 因此,为了获得所需的结果,必须添加类似的内容,以类似的方式操作AST 您可以在Groovy的未来版本中添加一个新的特性问题,但您永远不知道……它可能会成为Groovy的未来版本
但是现在,我认为你仍然坚持你的println,就像上面所说的那样这可能对你有效,也可能对你无效。它很可能只在脚本中工作
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 ""
这将非常接近你想要的结果
如果要使用groovy类执行此操作,绑定哈希不存在。有一个属性散列,但它只访问对象属性,而不是闭包可用的所有变量。换句话说,它将丢失方法和参数中定义的变量
也许闭包有一个所有可用属性的散列,这将是完美的。我以后再看
还有一个对象上的dump方法,您可能会喜欢。为什么是的,我确实使用println进行调试。你怎么知道的?我真正想要的是[布雷特·维克托·塔克在原则上发明]。本质上是透明和即时反馈。