Dart는 중급 개발자들에게 매우 유용한 기능들을 제공하며, 특히 컬렉션(List, Map, Set)과 고차 함수는 더 복잡한 로직을 효율적으로 구현할 수 있게 해줍니다.
이번 글에서는 Dart의 컬렉션과 고차 함수의 개념 및 활용법을 쉽게 설명하겠습니다.
1. Dart 컬렉션의 종류와 특징
1.1 리스트(List)
List는 Dart에서 가장 기본적인 컬렉션 타입입니다. 리스트는 순서가 있는 요소들의 집합이며, 요소를 추가하거나 제거할 수 있습니다. Dart에서는 제네릭을 사용해 특정 타입의 요소만을 포함하도록 리스트를 정의할 수 있습니다.
List<int> numbers = [1, 2, 3, 4, 5];
List<String> names = ['Alice', 'Bob', 'Charlie'];
1.2 맵(Map)
Map은 키와 값의 쌍으로 이루어진 컬렉션입니다. 각 키는 고유해야 하며, 이를 통해 값을 빠르게 검색할 수 있습니다.
Map<String, int> ages = {'Alice': 25, 'Bob': 30, 'Charlie': 35};
1.3 세트(Set)
Set은 순서가 없는 고유한 값들의 집합입니다. 동일한 값이 중복되지 않도록 보장하므로, 중복된 값을 허용하지 않는 컬렉션이 필요할 때 유용합니다.
Set<String> uniqueNames = {'Alice', 'Bob', 'Charlie'};
2. 고차 함수의 개념과 활용
고차 함수(Higher-Order Function)는 다른 함수를 인자로 받거나, 함수를 반환하는 함수입니다. Dart에서는 고차 함수가 컬렉션과 결합되어 매우 강력한 도구로 활용됩니다.
2.1 map() 함수
map() 함수는 리스트, 맵, 세트의 각 요소에 대해 주어진 함수를 적용하여 새로운 컬렉션을 반환합니다.
List<int> numbers = [1, 2, 3, 4, 5];
List<int> squaredNumbers = numbers.map((num) => num * num).toList();
2.2 where() 함수
where() 함수는 조건을 만족하는 요소들만을 필터링하여 새로운 컬렉션을 만듭니다.
List<int> evenNumbers = numbers.where((num) => num.isEven).toList();
2.3 reduce() 함수
reduce() 함수는 리스트의 모든 요소를 하나의 값으로 축약하는 데 사용됩니다.
int sum = numbers.reduce((value, element) => value + element);
2.4 forEach() 함수
forEach() 함수는 리스트, 맵, 세트의 모든 요소에 대해 특정 작업을 수행할 때 사용됩니다.
names.forEach((name) => print('Hello, $name!'));
3. Dart 컬렉션과 고차 함수의 활용 사례
여러 가지 Dart 기능을 결합해 컬렉션을 더 효율적으로 관리할 수 있습니다.
예를 들어, 다음과 같이 여러 함수를 함께 사용해 복잡한 로직을 간단하게 구현할 수 있습니다.
List<int> numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
List<int> result = numbers
.where((num) => num.isEven) // 짝수만 필터링
.map((num) => num * num) // 각 짝수를 제곱
.toList(); // 결과를 리스트로 변환
print(result); // [4, 16, 36, 64, 100]
4. Dart의 컬렉션과 고차 함수 활용 팁
- 불변 리스트: const 키워드를 사용해 리스트를 불변으로 만들 수 있습니다. 불변 리스트는 안전하며, 변경할 수 없다는 것을 보장합니다.
- Set을 사용한 중복 제거: 리스트에 중복된 값이 포함되어 있을 때, 이를 Set으로 변환하면 쉽게 중복을 제거할 수 있습니다.
- Map의 활용: Map은 데이터를 구조화하여 저장할 때 매우 유용합니다. Map을 사용해 데이터를 키와 값으로 관리하면 데이터 접근이 빠르고 용이합니다.
Dart의 컬렉션(List, Map, Set)과 고차 함수는 코드의 가독성을 높이고, 복잡한 로직을 간단하게 구현할 수 있는 강력한 도구입니다.
이 글을 통해 중급 수준의 Dart 문법을 이해하고, 이를 프로젝트에 적극 활용해보세요!
구독!! 공감과 댓글은 저에게 큰 힘이 됩니다.
Starting Google Play App Distribution! "Tester Share" for Recruiting 20 Testers for a Closed Test.
'Dart > Dart Programming language' 카테고리의 다른 글
[중급] Dart 예외 처리 및 디버깅/예외 처리: try-catch-finally 완벽 가이드 (0) | 2024.09.06 |
---|---|
[중급] Dart 컬렉션과 고차 함수/ Iterable과 고차 함수: map, filter, reduce 등 완벽 이해 (0) | 2024.09.06 |
[초급] Dart 객체 지향 프로그래밍 기초: 접근 제어자: public, private, protected (0) | 2024.09.05 |
[초급] Dart 객체 지향 프로그래밍 기초: 상속 및 다형성 (0) | 2024.09.05 |
[초급] Dart 객체 지향 프로그래밍 기초: 생성자와 소멸자 (0) | 2024.09.05 |