320x100
void main(){
List<int> numbers = [
1,3,5,7,9
];
// reduce의 원리 - 일종의 반복문과 같다.
// 1. 1트에서는 prev에 numbers[0]인 1, next에 numbers[1]인 3이 입력된다.
final result = numbers.reduce((prev, next){
print('----------');
print('previous : $prev');
print('next : $next');
print('total: ${prev + next}');
// 2. 1트의 마지막 return 값에서 1+3로 4가 된다.
// 이것은 2트부터의 prev값이 된다.
return prev + next;
});
print(result);
}
reduce는 구조가 참 독특한 루프문 같다.
바로 위의 reduce문을 작동 시키면 final로 선언된 result는 이런 결과를 만들어낸다.
1트
// ----------
// previous : 1
// next : 3
// total: 4
// ----------
2트
// previous : 4
// next : 5
// total: 9
3트
// ----------
// previous : 9
// next : 7
// total: 16
4트
// ----------
// previous : 16
// next : 9
// total: 25
위의 것은 과정을 이해하기 위해서 풀어서 써진 것이고, 이것을 애로우 방식으로 기입해주면
void main(){
final result1 = numbers.reduce((prev, next) => prev + next);
print(result);
// 25
}
위의 과정을 거치고나서 결과값으로 25를 출력하는 것을 볼 수 있다.
reduce는 최초의 참조 타입과, 새로 담길 변수의 타입이 같아야 사용이 가능하다.
300x250
'개발일지 > 임시카테고리' 카테고리의 다른 글
dart - cascading (다트 - 캐스캐이딩) (0) | 2025.03.24 |
---|---|
dart - fold (reduce와 비슷한 반복문) (0) | 2025.03.24 |
dart - Map을 Mapping할때 - (다트 - 맵을 매핑할때) (0) | 2025.03.24 |
dart - List를 Mapping (0) | 2025.03.24 |
dart - 형변환 리스트-맵-셋 (List - Map - Set) (0) | 2025.03.24 |