본문 바로가기
개발일지/임시카테고리

dart - reduce 설명 (loop문), 애로우문 포함

by 다니엘의 개발 이야기 2025. 3. 24.
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