Dart Language Guide
  • Dart Language Guide (한국어)
  • LANGUAGE GUIDE
    • A basic Dart program
    • Important concepts
    • Keywords
    • Variables
    • Built-in types
      • Numbers
      • String
      • Booleans
      • Lists
      • Set
      • Maps
  • Functions
    • Parameters
    • The main() function
    • Functions as first-class objects
    • Anonymous functions
    • Lexical scope
    • Lexical closures
    • Testing functions for equality
    • Return values
    • Generators
Powered by GitBook
On this page
  1. Functions

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);
}
PreviousLexical scopeNextTesting functions for equality

Last updated 2 years ago