В чем разница между замыканием и вложенным замыканием? - PullRequest
2 голосов
/ 04 июня 2009

В чем разница между замыканием и вложенным замыканием? Было бы полезно хорошее объяснение с примерами.

1 Ответ

3 голосов
/ 04 июня 2009

Область действия переменных и с какой средой они связаны.

А как сложно их реализовать в компиляторе :)

ClosureA может быть связано с его локальной областью видимости LA и PA родительской области видимости, тогда замыкание внутри того, что называется ClosureB, связано (потенциально) с LB, LA, PA

func a( v1,v2,v3 ){
    closure_b(bv1, bv2, bv3) { # Closure
        b_local1 = bv1
        b_local2 = v1  # parent scope

        closure_c(cv1, cv2) { # Nested closure has 'closure_b's scope too
            c_local1 = cv1
            c_local2 = bv1 # direct-parent scope
            c_local3 = v1 # parent's parent scope (nesting)
            c_local4 = b_local2
        }
        return closure_c;

    }
    return closure_b(); # closure_b() returns closure_c 
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...