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
- Flutter
- ListView
- 자바 출력 방식
- java 콘솔 출력 차이
- DART
- java
- UI/UX
- nodejs
- unity
- java 출력
- 배포
- lifecycle
- 앱심사
- 엡
- printf
- JS
- scss
- JQ
- firebase
- LLM
- abap
- 자바 포맷 출력
- react
- 단축키
- Clean Architecture
- npm
- 자바스크립트
- println
- develop
- riverpod
Archives
- Today
- Total
guricode
자주쓰는 메서드 체이닝 본문
map() + where
숫자 리스트의 각 요소에 2를 곱한 후, 5보다 큰 값들만 반환하고 싶은 경우
List<int> numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
var result = numbers
.map((number) => number * 2)
.where((number) => number > 5);
print(result); // (6, 8, 10, 12, 14, 16, 18, 20)
- map()으로 숫자들을 2배 처리했다.
- where()으로 5보다 큰 값만 필터링했다.
정리
- 필터링이 필요할 때: where() 사용
- 각각을 변환할 때: map() 사용
where() + map() + reduce()
짝수만 골라 제곱한 후, 그 값을 모두 더하고 싶은 경우
List<int> numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
var result = numbers
.where((number) => number.isEven)
.map((number) => number * number)
.reduce((a, b) => a + b);
print(result); // 220
- 짝수 필터: where()
- 제곱 변환: map()
- 합산 처리: reduce()
where() + map()
문자열 중 글자 수가 5보다 많은 것만 골라 모두 대문자로 바꾸고 싶은 경우
List<String> words = ['apple', 'orange', 'watermelon', 'pineapple'];
var result = words
.where((word) => word.length > 5)
.map((word) => word.toUpperCase());
print(result); // (ORANGE, WATERMELON, PINEAPPLE)
- 길이 조건 필터: where()
- 대문자 변환: map()
where() + reduce()
짝수만 골라 모두 더하고 싶은 경우
List<int> numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
var result = numbers
.where((number) => number % 2 == 0)
.reduce((a, b) => a + b);
print(result); // 30
5보다 작은 숫자만 골라 모두 곱하고 싶은 경우
List<int> numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
var result = numbers
.where((number) => number < 5)
.reduce((a, b) => a * b);
print(result); // 24
where() + map() + fold()
양수만 골라 10을 더한 후, 전체 합을 구하고 싶은 경우
List<int> numbers = [-10, 20, -30, 40, 50];
var result = numbers
.where((number) => number > 0)
.map((number) => number + 10)
.fold(0, (a, b) => a + b);
print(result); // 140
- where()로 양수 필터링했다.
- map()으로 각각에 10을 더했다.
- fold()로 누적합을 구했다. 초기값이 있어 빈 리스트여도 에러가 발생하지 않는다.
- 필터를 한다 → where()
- 각각 뭘 해야 한다 → map()
- 더하거나 누적 값을 만든다 → reduce() 또는 fold()
이처럼 고차 함수들을 메서드 체이닝 방식으로 연결하면, 중간 변수 없이도 깔끔하게 원하는 작업을 처리할 수 있다. 어떤 순서로 어떤 함수를 사용하면 되는지 익숙해지는 것이 중요하다.
'앱 > Flutter&Dart' 카테고리의 다른 글
| Dart - 예외 처리 (0) | 2025.06.25 |
|---|---|
| 한눈에 보는 클래스와 메서드 요약 (0) | 2025.06.25 |
| Dart 간단 정리 - 컬렉션 고차 함수 (0) | 2025.06.24 |
| Dart 간단 정리 - 열거형 (Enum) 완전 정복 (0) | 2025.06.24 |
| 제네릭(Generic) 함수와 개념 (0) | 2025.06.24 |