nestedclosure2bug.groovy
来自「Groovy动态语言 运行在JVM中的动态语言 可以方便的处理业务逻辑变化大的业」· GROOVY 代码 · 共 68 行
GROOVY
68 行
import org.codehaus.groovy.classgen.TestSupport
/**
* @version $Revision: 2285 $
*/
class NestedClosure2Bug extends TestSupport {
Object f
void testFieldBug() {
def closure = {
return {
f = 123
return null
}
}
def value = closure()
value = value()
assert f == 123
}
void testBugOutsideOfScript() {
def a = 123
def b = 456
def closure = {
println b
def c = 999
return {
f = 2222111
println f
println c
def d = 678
return {
println f
assert f == 2222111
println d
return a
}
}
}
def c2 = closure()
def c3 = c2()
def value = c3()
assert f == 2222111
assert value == 123
}
void testBug() {
assertScript """
def a = 123
def closure = {
return {
return {
return a
}
}
}
def c2 = closure()
def c3 = c2()
value = c3()
assert value == 123
"""
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?