2009-06-04 11 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が関数fの範囲からどのように返されるのか説明できますか?または、この例のreturn文が間違っていますか? – adamjcooper

+0

私の場合はタイプミスが修正されます。 –

+0

参考にしていただきありがとうございます。 – adamjcooper

関連する問題