Closure

Closure 이해하기

Closure는 함수가 자신이 정의된 외부 환경(변수)을 "기억"하는 특성입니다. 즉, 함수가 다른 함수의 내부에 정의되어 있을 때, 그 함수는 외부 함수에서 정의된 변수에 접근할 수 있습니다.

Function makeAdder(int addBy) {
  return (int i) => addBy + i;  // addBy는 외부 함수의 변수
}

void main() {
  var add2 = makeAdder(2);  
  var add4 = makeAdder(4);  

  print(add2(3));  // 3 + 2 = 5
  print(add4(3));  // 3 + 4 = 7
}
  • makeAdder() 함수는 내부에서 addBy 변수를 사용합니다. 이 함수는 Closure를 반환하는데, 반환된 함수는 addBy 값을 기억하고 있기 때문에 addBy가 설정된 값을 계속 사용할 수 있습니다.

  • add2addBy가 2일 때 반환된 함수이고, add4는 4일 때 반환된 함수입니다.

  • 즉, add2(3)은 5를 반환하고, add4(3)은 7을 반환합니다. addBy 값은 함수가 반환될 때 결정되고, 그 후에도 계속해서 사용됩니다

Closure: 함수는 **자신의 외부 환경(변수)**을 기억하고, 그 외부 변수에 계속 접근할 수 있다.

Last updated