🔷 개념 설명: 클로저(Closure)란 무엇인가요?
✅ 클로저란?
클로저(Closure) 는 함수가 자신이 만들어질 당시의 변수 상태를 기억하는 기능이에요. 보통 함수가 실행되면 내부 변수는 사라지지만, 클로저는 함수가 생성될 때의 변수 값을 계속 기억하고 사용할 수 있어요.
Dart 함수 심화 학습 – 클로저(Closure) 편 |
📌 왜 클로저를 사용할까요?
-
상태 유지가 필요할 때 (예: 카운터, 점수 누적)
-
콜백 함수나 비동기 처리 시 유용
-
Flutter에서도 이벤트 핸들러로 자주 활용
🧩 클로저 동작 원리
Function makeCounter() {
int count = 0; // 이 변수를 기억해요!
return () {
count++;
print('현재 카운트: $count');
};
}
-
makeCounter() 함수가 실행되면, count 변수와 함께 익명 함수가 생성돼요.
-
생성된 함수는 count 값을 기억해서 호출될 때마다 증가시켜요.
🏆 실습 예제 1: 간단한 카운터 만들기
아래 빈칸을 채워서 클로저를 완성해보세요!
Function createCounter() {
int count = 0;
return () {
________;
print('지금까지 누른 횟수: $count');
};
}
void main() {
var counter = createCounter();
counter();
counter();
}
✨ 목표
-
함수가 호출될 때마다 count가 1씩 증가하도록 만드세요.
-
출력 예시:
지금까지 누른 횟수: 1
지금까지 누른 횟수: 2
✅ 정답 및 해설
Function createCounter() {
int count = 0;
return () {
count++; // 기억된 변수를 증가시켜요!
print('지금까지 누른 횟수: $count');
};
}
💡 해설: 클로저 함수 안에서 외부 변수 count에 접근해 값을 누적합니다.
🏆 실습 예제 2: 점수 누적 클로저 만들기
아래 코드를 완성해서 학생 점수를 누적해보세요!
Function makeScorer() {
int totalScore = 0;
return (int score) {
totalScore = totalScore + ________;
print('현재 총점: $totalScore');
};
}
void main() {
var scorer = makeScorer();
scorer(30);
scorer(20);
}
✨ 목표
-
매번 받은 점수를 누적해서 총점을 출력하세요.
-
출력 예시:
현재 총점: 30
현재 총점: 50
✅ 정답 및 해설
Function makeScorer() {
int totalScore = 0;
return (int score) {
totalScore = totalScore + score;
print('현재 총점: $totalScore');
};
}
💡 해설: 매개변수로 받은 score를 외부 변수 totalScore에 계속 더해주는 방식입니다. 이때 클로저가 totalScore 값을 기억하고 있기 때문에 누적이 가능해요.
📚 마무리 정리
용어 |
설명 |
---|---|
클로저 |
함수가 외부 변수 상태를 기억하는 기능 |
활용 예 |
카운터, 점수 누적, 상태 유지 함수 |
댓글 쓰기