오늘은 Dart 프로그래밍 언어에서 람다 함수를 어떻게 사용하는지 알아보겠습니다.
람다 함수는 코드의 가독성을 높이고, 짧고 간결하게 표현할 수 있는 강력한 도구입니다.
초보자도 쉽게 이해할 수 있도록 기본 개념부터 다양한 예제까지 차근차근 설명해 드릴게요.
람다 함수란?
람다 함수는 익명 함수(이름이 없는 함수)의 한 종류로, 주로 한 줄의 코드로 작성됩니다.
Dart에서는 => 연산자를 사용하여 람다 함수를 표현합니다. 이 방법을 사용하면 복잡한 코드 대신 간단한 표현으로 기능을 구현할 수 있습니다.
람다 함수 문법
람다 함수의 기본 문법은 다음과 같습니다.
(매개변수1, 매개변수2, ...) => 표현식;
- 매개변수: 람다 함수가 입력받을 값입니다. 여러 개의 매개변수를 사용할 수 있습니다.
- =>: 표현식의 결과를 반환합니다.
- 표현식: 함수가 수행할 작업입니다.
간단한 예제
이제 실제로 람다 함수를 만들어 볼까요?
void main() {
// 두 숫자를 더하는 람다 함수
var add = (int a, int b) => a + b;
print(add(5, 3)); // 출력: 8
}
위의 예제에서 add는 두 개의 정수를 더하는 람다 함수입니다. 간단하게 => 뒤에 a + b라는 표현식만 작성하면 됩니다.
람다 함수를 리스트와 함께 사용하기
람다 함수는 리스트를 다룰 때 특히 유용합니다. 다음은 리스트의 각 요소를 출력하는 예제입니다.
void main() {
List<String> fruits = ['사과', '바나나', '오렌지'];
// 리스트의 모든 요소를 출력하는 람다 함수
fruits.forEach((fruit) => print(fruit));
}
여기서 forEach 메소드는 리스트의 각 요소에 대해 람다 함수를 호출합니다.
fruit 매개변수는 리스트의 각 요소를 나타내며, print(fruit)을 통해 출력됩니다.
예제 1: 리스트 요소의 제곱하기
리스트의 각 요소를 제곱하는 람다 함수를 만들어 보자.
void main() {
List<int> numbers = [1, 2, 3, 4, 5];
// 각 요소를 제곱하는 람다 함수
var squaredNumbers = numbers.map((number) => number * number);
print(squaredNumbers.toList()); // 출력: [1, 4, 9, 16, 25]
}
설명: map 메소드는 리스트의 각 요소에 람다 함수를 적용하고, 새로운 리스트를 반환해. 여기서는 각 숫자를 제곱하고 있어.
예제 2: 조건에 맞는 요소 필터링
리스트에서 짝수만 필터링하는 예제다.
void main() {
List<int> numbers = [1, 2, 3, 4, 5, 6];
// 짝수만 필터링하는 람다 함수
var evenNumbers = numbers.where((number) => number % 2 == 0);
print(evenNumbers.toList()); // 출력: [2, 4, 6]
}
설명: where 메소드는 주어진 조건을 만족하는 요소만 선택하여 새로운 리스트를 생성해. 여기서는 짝수를 선택하고 있어.
예제 3: 리스트 요소의 합계 구하기
리스트의 모든 요소를 더하는 람다 함수를 만들어 보자.
void main() {
List<int> numbers = [1, 2, 3, 4, 5];
// 리스트의 모든 요소의 합을 구하는 람다 함수
var sum = numbers.reduce((total, number) => total + number);
print(sum); // 출력: 15
}
설명: reduce 메소드는 리스트의 모든 요소를 하나의 값으로 축약해. 여기서는 모든 숫자의 합을 구하고 있어.
예제 4: 문자열 리스트의 길이 계산
문자열 리스트의 각 요소의 길이를 구하는 예제다.
void main() {
List<String> words = ['apple', 'banana', 'cherry'];
// 각 문자열의 길이를 구하는 람다 함수
var lengths = words.map((word) => word.length);
print(lengths.toList()); // 출력: [5, 6, 6]
}
설명: 각 문자열에 대해 length 속성을 사용하여 문자열의 길이를 구하고 있어.
예제 5: 조건부 로직 사용하기
리스트의 각 요소에 대해 조건부 로직을 사용하는 예제다.
void main() {
List<int> numbers = [1, 2, 3, 4, 5];
// 각 숫자가 짝수인지 홀수인지 판별하는 람다 함수
var parity = numbers.map((number) => number % 2 == 0 ? '짝수' : '홀수');
print(parity.toList()); // 출력: [홀수, 짝수, 홀수, 짝수, 홀수]
}
설명: map 메소드 내에서 조건부 연산자를 사용하여 각 숫자가 짝수인지 홀수인지 판별하고 있어.
예제 6: 리스트 정렬
리스트의 요소를 정렬하는 예제다.
void main() {
List<int> numbers = [5, 3, 1, 4, 2];
// 리스트를 오름차순으로 정렬하는 람다 함수
numbers.sort((a, b) => a.compareTo(b));
print(numbers); // 출력: [1, 2, 3, 4, 5]
}
설명: sort 메소드는 주어진 비교 로직에 따라 리스트를 정렬해. 여기서는 compareTo 메소드를 사용하여 오름차순으로 정렬하고 있어.
예제 7: 리스트에서 특정 문자열 찾기
리스트에서 특정 문자열이 있는지 확인하는 예제다.
void main() {
List<String> fruits = ['사과', '바나나', '체리'];
// 리스트에 '바나나'가 있는지 확인하는 람다 함수
var containsBanana = fruits.any((fruit) => fruit == '바나나');
print(containsBanana); // 출력: true
}
설명: any 메소드는 리스트의 요소 중 하나라도 조건을 만족하는지 확인해. 여기서는 '바나나'가 있는지를 체크하고 있어.
람다 함수의 장점
- 가독성: 짧고 간결한 코드로 작성할 수 있어 이해하기 쉽습니다.
- 익명성: 이름이 필요 없으므로 일회성으로 사용할 때 적합합니다.
- 편리함: 다른 함수의 인자로 쉽게 전달할 수 있어 재사용성이 높습니다.
Dart의 람다 함수는 간단한 작업을 빠르게 처리할 수 있는 매우 유용한 도구입니다. 익명 함수의 강력함을 활용하여 더 깔끔하고 가독성 높은 코드를 작성해보세요!
공감과 댓글은 저에게 큰 힘이 됩니다.
Starting Google Play App Distribution! "Tester Share" for Recruiting 20 Testers for a Closed Test.
'Dart > Dart Programming language' 카테고리의 다른 글
[추가학습] 정규 표현식(Regex) 작성 방법: 초보자를 위한 가이드 (5) | 2024.10.20 |
---|---|
[추가학습] Dart에서 게터와 세터 이해하기: 데이터 캡슐화의 기초! (3) | 2024.10.18 |
[추가학습] Dart 커뮤니티 및 자원 활용 / Dart 최신 동향 (4) | 2024.09.22 |
[추가학습] Dart 커뮤니티 및 자원 활용 / 오픈소스 기여 (0) | 2024.09.22 |
[추가학습] Dart 커뮤니티와 학습 자료 / Dart 관련 컨퍼런스 및 이벤트 정보 (4) | 2024.09.19 |