Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 | 31 |
Tags
- riverpod
- println
- scss
- 엡
- UI/UX
- java 출력
- Flutter
- 자바 포맷 출력
- 자바 출력 방식
- LLM
- react
- abap
- 자바스크립트
- npm
- java 콘솔 출력 차이
- 단축키
- nodejs
- java
- 앱심사
- JQ
- DART
- lifecycle
- Clean Architecture
- JS
- ListView
- printf
- unity
- develop
- firebase
- 배포
Archives
- Today
- Total
guricode
Dart 간단 정리 - 컬렉션 고차 함수 본문
Dart에서 List, Set, Map 같은 컬렉션 타입 데이터를 다룰 때 자주 사용하는 고차 함수들이 있다. 고차 함수는 '함수를 매개변수로 받거나 반환하는 함수'로, 데이터를 가공하거나 필터링하거나 누적 처리할 때 유용하게 사용된다. 각 함수의 특징을 확인해보자.
map()
- 각 요소에 특정 함수를 적용해 새로운 컬렉션을 반환한다.
- 원본 데이터를 변경하지 않고, 반환되는 컬렉션의 크기는 원본과 같다.
- Iterable 타입으로 반환된다.
예시
List<String> fruits = ['사과', '오렌지', '수박'];
var delicious = fruits.map((fruit) => '맛있는 $fruit');
print(delicious); // (맛있는 사과, 맛있는 오렌지, 맛있는 수박)
List<int> numbers = [1, 2, 3];
var doubled = numbers.map((n) => n * 2);
print(doubled); // (2, 4, 6)
where()
- 조건을 만족하는 요소들만 필터링해 새로운 컬렉션으로 반환한다.
- 조건을 만족하는 요소가 없으면 빈 컬렉션을 반환한다.
- 원본 데이터를 변경하지 않는다.
예시
List<int> numbers = [1, 2, 3, 4, 5];
var even = numbers.where((n) => n.isEven);
print(even); // (2, 4)
var none = numbers.where((n) => n > 10);
print(none); // ()
firstWhere()
- 조건을 만족하는 요소 중 첫 번째 요소를 반환한다.
- 조건을 만족하는 요소가 없으면 오류를 발생시킨다.
예시
List<int> numbers = [1, 2, 3, 4];
var result = numbers.firstWhere((n) => n > 2);
print(result); // 3
// var error = numbers.firstWhere((n) => n > 10); // 오류 발생
lastWhere()
- 조건을 만족하는 요소 중 마지막 요소를 반환한다.
- 조건을 만족하는 요소가 없으면 오류를 발생시킨다.
예시
List<int> numbers = [1, 2, 3, 4];
var result = numbers.lastWhere((n) => n < 4);
print(result); // 3
reduce()
- 컬렉션의 모든 요소를 하나의 값으로 결합한다.
- 첫 번째 요소를 초기값처럼 사용한다.
- 빈 컬렉션이면 오류가 발생한다.
- 반환 타입은 요소의 타입과 같아야 한다.
예시
List<int> numbers = [1, 2, 3, 4, 5];
var sum = numbers.reduce((a, b) => a + b);
print(sum); // 15
fold()
어떤 함수인가요?
- reduce와 유사하지만, 초기값을 직접 지정할 수 있다.
- 반환 타입이 자유롭다.
- 빈 컬렉션이어도 초기값으로 연산을 시작할 수 있다.
예시
List<int> numbers = [1, 2, 3];
var result = numbers.fold(10, (a, b) => a + b);
print(result); // 16
any()
어떤 함수인가요?
- 하나라도 조건을 만족하면 true를 반환한다.
- 모두 만족하지 않으면 false를 반환한다.
예시
List<int> numbers = [1, 2, 3];
print(numbers.any((n) => n > 2)); // true
print(numbers.any((n) => n > 10)); // false
every()
어떤 함수인가요?
- 모든 요소가 조건을 만족하면 true를 반환한다.
- 하나라도 만족하지 않으면 false를 반환한다.
예시
List<int> numbers = [2, 4, 6];
print(numbers.every((n) => n % 2 == 0)); // true
print(numbers.every((n) => n < 6)); // false
takeWhile()
어떤 함수인가요?
- 조건이 참인 동안 요소들을 반환한다.
- 조건이 처음으로 거짓이 되는 순간부터 이후 요소들은 모두 제외된다.
예시
List<int> numbers = [1, 2, 3, 4, 5];
var result = numbers.takeWhile((n) => n < 4);
print(result); // (1, 2, 3)
skipWhile()
어떤 함수인가요?
- 조건이 참인 동안 요소들을 건너뛴다.
- 조건이 처음으로 거짓이 되는 순간부터 끝까지의 요소들을 모두 반환한다.
예시
List<int> numbers = [1, 2, 3, 4, 5];
var result = numbers.skipWhile((n) => n < 4);
print(result); // (4, 5)
reduce vs fold 차이 정리
항목 reduce() fold()
| 초기값 | 첫 번째 요소 | 직접 지정 |
| 빈 컬렉션 | 오류 발생 | OK (초기값 사용) |
| 타입 유연성 | 없음 (고정) | 있음 (자유롭게 변환 가능) |
각 함수는 상황에 맞게 데이터를 처리하는 데 유용하다. 특히 map, where, reduce, fold는 자주 쓰이는 만큼 충분히 익혀두자.
'앱 > Flutter&Dart' 카테고리의 다른 글
| 한눈에 보는 클래스와 메서드 요약 (0) | 2025.06.25 |
|---|---|
| 자주쓰는 메서드 체이닝 (0) | 2025.06.24 |
| Dart 간단 정리 - 열거형 (Enum) 완전 정복 (0) | 2025.06.24 |
| 제네릭(Generic) 함수와 개념 (0) | 2025.06.24 |
| Dart 간단 정리 - 컬렉션 고차 함수 & Map 고급 활용 (0) | 2025.06.24 |