반응형

Dart, 접근 범위와 클로저(closure)

 

글. 수알치 오상문 

 

접근 범위 

변수의 범위는 코드 레이아웃에 의해 결정됩니다. 변수가 범위 내에 있는지 확인하기 위해 중괄호 소속으로 접근할 수 있습니다. 예제는 다음과 같습니다(자기가 소속된 범위에서 접근할 수 있습니다).

 

bool topLevel = true;

 

void main() {

  var insideMain = true;

  void myFunction() {

    var insideFunction = true;

    void nestedFunction() {

      var insideNestedFunction = true;

      assert(topLevel);

      assert(insideMain);

      assert(insideFunction);

      assert(insideNestedFunction);

    }

  }

}

 

클로저 

클로저는 함수가 원래 범위 밖에서 사용되는 경우에도 범위 안의 변수에 접근할 수있는 함수 객체입니다.

함수는 주변 범위에 정의된 변수를 통해 닫힐 수 있습니다. 다음 예제에서 makeAdder() 함수는 변수 addBy를 확인합니다. 반환된 함수가 가는 곳마다 addBy를 검사합니다.

 

/// 함수 매개변수 값과 addBy를 추가하여 돌려주는 함수 객체를 반환

Function makeAdder(int addBy) {

  return (int i) => addBy + i;  // 익명 함수 객체를 반환 

}

 

void main() {

  var add2 = makeAdder(2);  // 2를 더하는 함수 생성 

  var add4 = makeAdder(4);  // 4를 더하는 함수 생성

  assert(add2(3) == 5);   // 3+2

  assert(add4(3) == 7);   // 3+4

}

 

<이상>

반응형

'Dart' 카테고리의 다른 글

Dart, 연산자  (0) 2021.06.15
Dart, 함수 비교 테스트  (0) 2021.06.15
Dart, 이름없는 함수  (0) 2021.06.15
Dart, 함수  (0) 2021.06.14
Dart, 맵(사전) 자료형 Map  (0) 2021.06.14

+ Recent posts