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 |