개발이 좋아서/Flutter가 좋아서
[Dart] 3일차_함수형 프로그래밍_reduce, fold
zoaseo
2022. 12. 14. 18:10
1) reduce
void main() {
List<int> numbers = [
1,
3,
5,
7,
9
];
final result = numbers.reduce((prev, next){
print('--------------');
print('previous : $prev');
print('next : $next');
print('total : ${prev + next}');
return prev + next;
});
print(result);
final result2 = numbers.reduce((prev, next) => prev + next);
print(result2);
List<String> words = [
'안녕하세요 ',
'저는 ',
'코드팩토리입니다.',
];
final sentence = words.reduce((prev, next) => prev + next);
// final sentence = words.reduce((prev, next) => prev.length + next.length); // return의 형태가 String이 아니기 때문에 안된다!!!
print(sentence);
}

2) fold
void main() {
List<int> numbers = [
1,
3,
5,
7,
9
];
final sum = numbers.fold<int>(0, (prev, next){
print('--------------');
print('previous : $prev');
print('next : $next');
print('total : ${prev + next}');
return prev + next;
});
print(sum);
List<String> words= [
'안녕하세요 ',
'저는 ',
'코드팩토리입니다.',
];
final sentence = words.fold<String>('', (prev, next) => prev + next);
print(sentence);
final count = words.fold<int>(0, (prev, next) => prev + next.length);
print(count);
}
