2009-06-04 3 views

답변

3

변수의 범위와 변수가 바인딩되는 환경.

어떻게 하드 그들이 그라고 ClosureB 내부 후 폐쇄에 바인딩 로컬 범위 LA와 부모 범위 PA는,이다 :

ClosureA가 결합 할 수있는 컴파일러 구현입니다 (잠재적) 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 
} 
+0

return 문까지 코드의 모든 내용을 수행합니다. 나는 closure_c가 closure_b 밖에서 접근 가능하다고 생각하지 않았습니다. closure_c가 func a의 범위에서 어떻게 반환 될 수 있는지 설명 할 수 있습니까? 아니면이 예제의 return 문이 올바르지 않습니까? – adamjcooper

+0

제 경우에는 오타가 수정됩니다. –

+0

유용한 예제에 감사드립니다. – adamjcooper

관련 문제