프로그래밍 공부 메모/flutter

List 다루기 Looping / Mapping / Reduce / Fold

jjs815 2022. 5. 17. 22:50
void main() {
  //Looping
  //Mapping
  //Reduce/Fold

  List<String> redVelvat = ['아이린', '슬기', '웬디', '조이', '예리'];
  
  //Looping - forEach
  redVelvat.forEach((val){
    print(val);
  });
  for(String val in redVelvat){
    print(val);
  }
  
  //Mapping = map
  final newList = redVelvat.map((val){
    return '제 이름은 $val 입니다';  //return 값이 있다
  });
  print(newList.toList());
  
  //Reduce/Fold - reduce, fold(시작하는 index 위치를 정할 수 있다) 값을 누적 시킴
  List<int> numbers = [0,1,2,3,4,5];
  
  int total = numbers.fold(0, (total,element){
    return total + element;
  });
  print(total);
  
  //#1
  //시작 index = 0
  //값 element = 0
  //이전 total = 0 
  //return = 0
  
  //#2
  //index = 1
  //element = 1
  //total = 0 
  //return = 0 + 1 = 1
  
  //#3
  //index = 2
  //element = 2
  //total = 1 
  //return = 1 + 2 = 3
  
  //#4
  //index = 3
  //element = 3
  //total = 3 
  //return = 3 + 3 = 6
  
  int total2 = numbers.reduce((total, element){
    return total + element;
  });
  print(total2);
  
  
  List<String> names = ['jjs','레드벨벳','bts'];
  
  //fold는 리턴 값과 변수의 타입이 일치 하지 않아도 사용가능
  int total3 = names.fold(0,(total,element){
    return total + element.length;
  });
  
  //reduce는 리턴 값과 변수의 타입이 같아야 한다
  final  total4 = names.reduce((total, element){
    return total + element.length; //에러
  });
  
}
반응형