개발이 좋아서/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);
}

댓글수0