본문 바로가기
프로그래밍

👨‍💻 [Flutter] Flutter 에서 익명 함수(Anonymous Function)와 람다 함수(Lambda Function)는 무엇인가요?

by 밝음의기둥 2024. 11. 20.
반응형

👨‍💻 안녕하세요, 윌리 프로젝트의 윌리 입니다.

Flutter 에서 익명 함수(Anonymous Function)와 람다 함수(Lambda Function)는 무엇인지 간략히 알아보았습니다.


질문 >

Flutter 에서 익명 함수(Anonymous Function)와 람다 함수(Lambda Function)는 무엇인가요?

답변 >

Flutter에서 **익명 함수(Anonymous Function)**와 **람다 함수(Lambda Function)**는 Dart 언어의 함수 작성 방식 중 하나로, 이름 없이 간단한 작업을 수행할 때 사용됩니다. 이러한 함수들은 주로 콜백 함수나 간단한 로직을 전달할 때 활용됩니다.


익명 함수 (Anonymous Function)

익명 함수는 이름이 없는 함수로, 특정 작업을 수행하기 위해 인라인으로 정의됩니다. Dart에서 일반 함수와 동일한 방식으로 정의할 수 있지만, 이름이 없습니다.

익명 함수의 기본 형식

(parameters) {
  // 함수 본문
};

익명 함수 예제

void main() {
  // 익명 함수 전달
  var numbers = [1, 2, 3];
  numbers.forEach((number) {
    print('Number: $number');
  });
}

  • (number) { print('Number: $number'); }: 익명 함수로 정의된 콜백입니다.
  • forEach는 리스트의 각 요소를 익명 함수에 전달합니다.

특징

  1. 이름 없음: 함수를 한 번만 사용하거나 간단한 작업에 적합합니다.
  2. 클로저 지원: 외부 범위의 변수를 캡처하여 사용할 수 있습니다.
  3. 코드 간결화: 불필요한 함수 선언 없이 인라인으로 작성 가능합니다.

람다 함수 (Lambda Function)

람다 함수는 짧은 익명 함수를 작성할 때 사용하는 Dart의 간단한 문법입니다. Dart에서 람다 함수는 화살표 함수(=>)로 작성됩니다.

람다 함수의 기본 형식

(parameters) => expression;

  • 람다 함수는 항상 단일 표현식을 반환합니다.
  • 중괄호({})를 사용할 필요가 없으며, 표현식이 암묵적으로 반환됩니다.

람다 함수 예제

void main() {
  // 람다 함수 사용
  var numbers = [1, 2, 3];
  numbers.forEach((number) => print('Number: $number'));
}

  • (number) => print('Number: $number');: 람다 함수로 작성된 콜백입니다.

람다 함수와 익명 함수 비교

익명 함수와 람다 함수는 동일한 작업을 수행할 수 있지만, 문법과 표현 방식이 다릅니다.

// 익명 함수
numbers.forEach((number) {
  print('Number: $number');
});

// 람다 함수
numbers.forEach((number) => print('Number: $number'));

특징

  1. 단일 표현식 함수: 단일 작업을 간결하게 표현할 때 유용합니다.
  2. 간결한 문법: 코드의 가독성을 높이고, 불필요한 중괄호를 줄입니다.

익명 함수와 람다 함수 활용 예제

버튼의 onPressed 콜백

Flutter의 onPressed 이벤트에 익명 함수나 람다 함수를 전달할 수 있습니다.

ElevatedButton(
  onPressed: () {
    print('Button Pressed');
  }, // 익명 함수
  child: Text('Click Me'),
);

ElevatedButton(
  onPressed: () => print('Button Pressed'), // 람다 함수
  child: Text('Click Me'),
);

리스트 맵핑

리스트의 각 요소를 다른 값으로 변환할 때 사용합니다.

void main() {
  var numbers = [1, 2, 3];

  // 익명 함수
  var squaredNumbers = numbers.map((number) {
    return number * number;
  }).toList();

  // 람다 함수
  var cubedNumbers = numbers.map((number) => number * number * number).toList();

  print(squaredNumbers); // [1, 4, 9]
  print(cubedNumbers);   // [1, 8, 27]
}


익명 함수와 람다 함수의 차이점

특징  익명 함수  람다 함수
문법 (parameters) { ... } (parameters) => expression
표현 가능성 여러 줄의 코드와 복잡한 로직 구현 가능 단일 표현식만 작성 가능
가독성 복잡한 작업에 적합 간단한 작업에 더 적합
사용 사례 복잡한 로직이 필요할 때 사용 간단한 작업이나 단일 반환식이 필요할 때 사용

클로저(Closure)

익명 함수와 람다 함수는 클로저를 지원합니다. 클로저는 함수가 외부 범위의 변수를 캡처하여 사용할 수 있도록 합니다.

클로저 예제

void main() {
  int counter = 0;

  var increment = () {
    counter++;
    print('Counter: $counter');
  };

  increment(); // Counter: 1
  increment(); // Counter: 2
}

  • *increment*는 외부 범위의 counter 변수에 접근하여 값을 변경할 수 있습니다.

결론

  • 익명 함수람다 함수는 Flutter에서 콜백이나 간단한 작업을 처리하기 위한 핵심 도구입니다.
  • 익명 함수는 복잡한 로직을 처리할 때 적합하며, 람다 함수는 간결하고 직관적인 표현이 필요한 경우에 유용합니다.
  • 이를 통해 코드의 가독성을 높이고, 불필요한 함수 선언을 줄여 개발 효율성을 향상시킬 수 있습니다.

"이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."


🎬 유튜브 채널 🎬

 

위로그@WiLog

📢 안녕하세요, 위로그@WiLog 시청자 여러분, 저는 윌리 입니다. 📢 위로그@WiLog 는 자기주도학습을 목적으로 라이브 스트리밍을 합니다. 📢 1인 게임 개발을 목표로 Unreal과 Blender를 학습 중입니

www.youtube.com

🎬 치지직 채널 🎬

 

위로그 채널 - CHZZK

지금, 스트리밍이 시작됩니다. 치지직-

chzzk.naver.com


반응형