반응형
👨💻 안녕하세요, 윌리 프로젝트의 윌리 입니다.
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는 리스트의 각 요소를 익명 함수에 전달합니다.
특징
- 이름 없음: 함수를 한 번만 사용하거나 간단한 작업에 적합합니다.
- 클로저 지원: 외부 범위의 변수를 캡처하여 사용할 수 있습니다.
- 코드 간결화: 불필요한 함수 선언 없이 인라인으로 작성 가능합니다.
람다 함수 (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'));
특징
- 단일 표현식 함수: 단일 작업을 간결하게 표현할 때 유용합니다.
- 간결한 문법: 코드의 가독성을 높이고, 불필요한 중괄호를 줄입니다.
익명 함수와 람다 함수 활용 예제
버튼의 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에서 콜백이나 간단한 작업을 처리하기 위한 핵심 도구입니다.
- 익명 함수는 복잡한 로직을 처리할 때 적합하며, 람다 함수는 간결하고 직관적인 표현이 필요한 경우에 유용합니다.
- 이를 통해 코드의 가독성을 높이고, 불필요한 함수 선언을 줄여 개발 효율성을 향상시킬 수 있습니다.
"이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."
🎬 유튜브 채널 🎬
🎬 치지직 채널 🎬
반응형
'프로그래밍' 카테고리의 다른 글
👨💻 [Flutter] Flutter의 프레임워크 계층적 구조는 어떻게 되나요? (1) | 2024.11.20 |
---|---|
👨💻 [Flutter] Flutter 의 구조는 어떻게 되나요? (1) | 2024.11.20 |
👨💻 [Flutter] Flutter 로 구현된 어플리케이션은 어떤 것들이 있나요? (0) | 2024.11.20 |
👨💻 [Flutter] Flutter 에서 mixin 은 무엇이며, 어떻게 활용할 수 있나요? (1) | 2024.11.19 |
👨💻 [Flutter] Flutter 에서 AOT (Ahead Of Time) 방식은 어떻게 활용되나요? (1) | 2024.11.19 |