[ Dart&Flutter ] Dart 함수 심화 학습 – 클로저(Closure) 편

🔷 개념 설명: 클로저(Closure)란 무엇인가요?

✅ 클로저란?

클로저(Closure) 는 함수가 자신이 만들어질 당시의 변수 상태를 기억하는 기능이에요. 보통 함수가 실행되면 내부 변수는 사라지지만, 클로저는 함수가 생성될 때의 변수 값을 계속 기억하고 사용할 수 있어요.


Dart 함수 심화 학습 – 클로저(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 값을 기억하고 있기 때문에 누적이 가능해요.










📚 마무리 정리

용어

설명

클로저

함수가 외부 변수 상태를 기억하는 기능

활용 예

카운터, 점수 누적, 상태 유지 함수


댓글 쓰기