closureusingoutervariablestest.groovy

来自「Groovy动态语言 运行在JVM中的动态语言 可以方便的处理业务逻辑变化大的业」· GROOVY 代码 · 共 70 行

GROOVY
70
字号
/** 
 * @author <a href="mailto:james@coredevelopers.net">James Strachan</a>
 * @version $Revision: 2281 $
 */
class ClosureUsingOuterVariablesTest extends GroovyTestCase {
    
    void testUseOfOuterVariable() {
        
        def x = 123
        def y = "hello"
        
        def closure = { i ->
            println("x ${x}")
            println("y ${y}")
            println("i ${i}")
                
            assert x == 123
            assert y == 'hello'
        }
        closure.call(321)
	}

     /*
     TODO: is this a valid test case?
     void testInnerVariablesVisibleInOuterScope() {
                
        closure = { z = 456 } 
        closure.call(321)
        
        assert z == 456
    }
    */
    
    void testModifyingOuterVariable() {
        
        def m = 123
        
        def closure = { m = 456 } 
        closure.call(321)
        
        assert m == 456
    }
    
    void testCounting() {
        def sum = 0

        [1, 2, 3, 4].each { sum = sum + it }

        assert sum == 10
    }
    
    void testExampleUseOfClosureScopes() {
        def a = 123
        def b
        def c = { b = a + it }
        c(5)
        
        println(b)
        assert b == a + 5
    }    

    void testExampleUseOfClosureScopesUsingEach() {
        def a = 123
        def b
        [5].each { b = a + it }

        assert b == a + 5
    }
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?