void main() {
//looping
//Mapping
//Reduce/Fold
List<String> students = ['김군','이군','박군','홍군','정군',];
students.forEach((value){
print(value);
});
print('---------- && ----------');
for(String value in students){
print(value);
}
print('---------- && ----------');
final newList = students.map((value){
return 'My name is $value.';
});
print(newList);
print(students);
print(newList is Iterable);
print(students is List);
print('---------- && ----------');
List<int> numbers = [1,2,3,4,5];
int total = numbers.fold(0, (total, element){
return total + element;
});
print('total(fold) is $total');
print('---------- && ----------');
// index = 0
// element = 1;
// total = 0;
// return = 0 + 1 => total
// index = 1
// element = 2;
// total = 1;
// return = 1 + 2 => total
int total2 = numbers.reduce((total, element){
return total + element;
});
print('total2(reduce) is $total2');
print('---------- && ----------');
// 차이점
// 리턴 타입과 리스트타입이 같으면 fold/reduce 사용가능
// 다르면 fold만 사용가능, total4 는 오류나서 테스트 불가
List<String> names = ['밀라노','로마','서울',];
int total3 = names.fold(0, (total, element){
return total + element.length;
});
print('total3(fold) is $total3');
print('---------- && ----------');
// total은 스트링, element.length은 int 타입이라 오류 발생.
// 리턴타입(int total4)와 리스트(List<String>) 타입이 같아야 한다.
// int total4 = names.reduce((total, element){
// return total + element.length;
// });
// print('total4(reduce) is $total4');
// print('---------- && ----------');
}
--------------------------------------------[result]
김군
이군
박군
홍군
정군
---------- && ----------
김군
이군
박군
홍군
정군
---------- && ----------
(My name is 김군., My name is 이군., My name is 박군., My name is 홍군., My name is 정군.)
[김군, 이군, 박군, 홍군, 정군]
true
true
---------- && ----------
total(fold) is 15
---------- && ----------
total2(reduce) is 15
---------- && ----------
total3(fold) is 7
---------- && ----------