Closure
Static State : 정적 상태
- Global : static 변수
- Main Flow
- Sub Flow
- Main Flow ➡️ Routine Create ➡️ Sub Flow
- Main Flow 변수 : Routine의 argment 참조
- Static 변수 : Static memory 참조
Runtime State : 실행 상태
- Global : runtime state
- Main Flow
- Sub Flow
- 함수를 값으로 정의 내릴 수 있게되면서, Runtime State에서 Flow를 동적으로 생성 가능
- Runtime State에서 함수를 정의 및 실행 가능 ➡️ Sub-flow 발생 가능 in Runtime State
- Main Flow ➡️ Routine Create ➡️ SubFlow on same Memory, in Runtime State
- Routine에서 Runtime state, MainFlow 변수 참조 가능
- Free variable(자유 변수)
- Scope 생성 = Closure 발생
Closure 생성
- Routine에서 Free variable 사용시, Routine 함수 return 되기 전까지 Main Flow에서 해당 변수의 메모리 해제가 불가능
- Free variable이 Routine에 의해 갇힘 현상이 발생
- Free variable의 Scope가 Routine에서 발생
- Routine에 의해 Closure가 생성된 것이다.
코드스피츠 함수와 OOP-2