Lexical closures

클로저는 원래의 범위 밖에서 함수가 사용되더라도 그 어휘적 범위 내의 변수에 접근할 수 있는 함수 객체입니다.

함수는 주변 범위에서 정의된 변수를 캡처할 수 있습니다. 다음 예시에서 makeAdder()는 변수 addBy를 캡처합니다. 반환된 함수가 어디로 가든, 그것은 addBy를 기억합니다.

/// Returns a function that adds [addBy] to the
/// function's argument.
Function makeAdder(int addBy) {
  return (int i) => addBy + i;
}

void main() {
  // Create a function that adds 2.
  var add2 = makeAdder(2);

  // Create a function that adds 4.
  var add4 = makeAdder(4);

  assert(add2(3) == 5);
  assert(add4(3) == 7);
}

Last updated