본문 바로가기
Flutter

[Flutter/플러터] Dart 반복문 쓰지 않고 리스트 합, 최댓값, 최솟값 구하기 - fold

by 얘리밍 2022. 9. 23.
320x100
728x90

 

 

반복문을 사용하지 않고 리스트의 총 합을 구할 수 있는 방법이 있다.

fold ( )를 사용하면 된다. 

 

 

 

공식 문서를 보자

https://api.dart.dev/stable/1.10.1/dart-core/List/fold.html

 

fold method - List class - dart:core library - Dart API

dynamic fold( initialValue,dynamic combine(previousValue, E element) ) Reduces a collection to a single value by iteratively combining each element of the collection with an existing value Uses initialValue as the initial value, then iterates through the e

api.dart.dev

 

 

 

dynamic fold(

    initialValue,
    dynamic combine(previousValue, E element)

)

 

 

collection의 각 요소를 기존 값과 반복적으로 결합하여 collection의 합을 단일값으로 만들어준다. 

initialValue를 초기 값으로 사용한 다음,

요소를 반복하고 결합 함수를 사용하여 각 요소로 값을 업데이트 시킨다. 

 

 

var value = initialValue;
for (E element in this) {
  value = combine(value, element);
}
return value;

 

 

사용은 다음과 같다. 

iterable.fold(0, (prev, element) => prev + element);

 

 

예시)

List<int> myList = [1, 3, 5, 8, 7, 2, 11];
int result = myList.fold(0, (sum, element) => sum + element);

print(result);
output : 37

 

 

 

리스트 안에서 가장 큰 수 구하기

 

final myList = [1, 3, 5, 8, 7, 2, 11];
final int result = myList.fold(myList.first, (max, element) {
    if (max < element) max = element;
    return max;
  });

print(result);
output : 11

 

 

가장 작은 수 구하기

final myList = [10, 3, 5, 8, 7, 2, 11];
final int result = myList.fold(myList.first, (min, element) {
    if (min > element) min = element;
    return min;
  });

  print(result);
output : 2

 

 

참고 및 출처 : https://www.kindacode.com/article/flutter-dart-fold-method-examples/

728x90
반응형