以下代码可以正常使用
def json = new JsonBuilder()
json {
writeNumbers(delegate, "myNumbers")
}
println json.toPrettyString()
def writeNumbers(json, name) {
json."$name" {
"w" 32
"h" 32
}
}
但是一旦我在另一个'范围内移动或添加一个writeNumbers调用,我就会得到一个stackoverflow异常;就像这样
def json = new JsonBuilder()
json {
scopes {
writeNumbers(delegate, "myNumbers")
}
}
println json.toPrettyString()
def writeNumbers(json, name) {
json."$name" {
"w" 32
"h" 32
}
}
结果:
Caught: java.lang.StackOverflowError
java.lang.StackOverflowError
为什么会发生这种情况,我该如何解决这个问题? 感谢
答案 0 :(得分:2)
我认为这是由构建闭包链时方法writeNumbers
未知的潜在错误引起的。
您需要更改:
writeNumbers(delegate, "myNumbers")
到
this.writeNumbers(delegate, "myNumbers")
它会起作用......但有趣的是,这个感觉就像一个错误...我会调查我是否有空闲时间; - )