서론
최근 관심이 가게 되어서 플러터 공부를 시작했습니다.
책을 통해서 공부하는 중 기초 문법을 하는 과정에 reduce() 메소드를 이용하는 부분이 나와있는데
어떤 식으로 실행될까 궁금하다가 조금 정리를 해보았습니다.
본론
예시코드
void main() {
List<int> testList = [1, 2, 3];
print(testList.reduce((value, element) => value + element));
}
여기에서 'print(testList.reduce((value, element) => value + element));' 부분은 Dart의 'reduce' 메소드를 사용해서 'testList'리스트의 모든 요소를 하나씩 더해서 그 합을 출력하는 코드 입니다.
'testList'는 'List<int>' 타입의 데이터를 갖고 있으며, 여기서는 '[1, 2, 3]' 이라는 리스트입니다.
'reduce'
해당 메소드는 리스트에 있는 각 요소를 순회하면서 주어진 함수를 실행하여 최종적으로 하나의 결과값을 반환합니다.
이 메소드는 리스트의 첫 번째 요소를 시작값으로 사용하고, 리스트의 두 번째 요소부터 순회를 시작합니다.
주어진 함수 '(value, element) => value + element'에서 'value'는 이전에 호출된 콜백의 반환값이며, 첫 번째 요소에서는 리스트의 첫 번째 요소가 됩니다.
'element'는 현재 처리되고 있는 리스트의 요소입니다. 이 함수는 'value'와 'element'를 더한 값을 반환합니다.
이 과정을 상세하게 살펴보면 다음의 순서로 진행됩니다.
- 처음 'reduce'가 호출될 때, 'value'는 '1'(리스트의 첫 번째 요소)이고,
'element'는 '2'(리스트의 두 번째 요소)입니다. 이들을 더하면 '3'이 되고, 이 값이 다음 단계의 'value'가 됩니다. - 다음으로 'value'는 '3'이 되고, 'element'는 '3'(리스트의 세 번째 요소)입니다.
이를 더하면 '6'이 되며, 리스트의 모든 요소가 처리되었으므로 'reduce' 메소드는 '6'을 반환합니다. - 마지막으로 'print'함수가 이 반환값 '6'을 출력합니다.
따라서, 이 코드의 출력은 리스트 '[1, 2, 3]'의 모든 요소의 합인 '6'이 됩니다.
플러터와 다트 언어를 처음 시작하시는 과정 가운데 reduce 메소드에 이해가 조금이라도 되셨으면 좋겠습니다.
감사합니다 :)