-
Dart 102Flutter/Dart 2023. 4. 28. 16:47728x90
다트102
함수형 프로그래밍
형변환이 기본
void main() { List<String> blackPink=['로제','지수','리사','제니']; print(blackPink); print(blackPink.asMap()); //set은 중복을 제거한다. print(blackPink.toSet()); Map blackPinkMap = blackPink.asMap(); print('---iterable을 반환한다.---'); print(blackPinkMap.keys); print(blackPinkMap.values); print('---list 형태로 반환하기---'); print(blackPinkMap.keys.toList()); print(blackPinkMap.values.toList()); print('---set으로---'); Set blackPinkSet = Set.from(blackPink); print(blackPinkSet.toList()); }
List매핑
void main() { List<String> blackPink = ['로제', '지수', '리사', '제니']; print(blackPink); //함수의 파라미터로 함수를 넣어준다. final newBlackPink = blackPink.map((x) { return '블랙핑크 $x'; }); print(newBlackPink.toList()); //화살표 함수로 위의 함수를 짧게 쓰기 final newBlackPink2 = blackPink.map((x) => '블랙핑크 $x'); print(newBlackPink2.toList()); //map함수를 쓰면 새로운 list가 생긴다. print(blackPink == blackPink); //t print(newBlackPink == blackPink); //f print(newBlackPink == newBlackPink2); //f // [1.jspg, 2.jspg, 3.jspg, 4.jspg, 5.jspg, ] 식으로 출력하고 싶다면 String number = '13579'; final parsed = number.split('').map((x)=>'$x.jpg').toList(); print(parsed); }
Map매핑
void main() { Map<String, String> harryPotter = { 'Harry Potter': '해리 포터', 'Ron Weasley': '론 위즐리', 'Hermione Granger': '헤르미온느 그레인저' }; final result = harryPotter.map( (key, value) => MapEntry('Harry Potter Character - $key', '해리포터 캐릭터 - $value'), ); print(result); final keys = harryPotter.keys.map((x) => 'HPC $x').toList(); final values = harryPotter.values.map((x) => '해포캐 $x').toList(); print(keys); print(values); }
Set매핑
void main() { Set blackPinkSet = { '로제', '지수', '제니', '리사', }; final newSet = blackPinkSet.map((x) => '블랙핑크 $x').toSet(); print(newSet); }
where
void main() { List<Map<String, String>> people = [ {'name': '로제', 'group': '블랙핑크'}, {'name': '진', 'group': '비티에스'}, {'name': '지수', 'group': '블랙핑크'}, {'name': '알엠', 'group': '비티에스'}, ]; //필터링이 가능 print(people); final blackPink = people.where((x)=>x['group']=='블랙핑크').toList(); print(blackPink); final bts = people.where((x)=>x['group']=='비티에스').toList(); print(bts); } //[{name: 로제, group: 블랙핑크}, {name: 진, group: 비티에스}, {name: 지수, group: 블랙핑크}, {name: 알엠, group: 비티에스}] //[{name: 로제, group: 블랙핑크}, {name: 지수, group: 블랙핑크}] //[{name: 진, group: 비티에스}, {name: 알엠, group: 비티에스}]
reduce,fold
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); List<String> words=[ '안녕하세요','저는','두부입니다.' ]; final sentence = words.reduce((prev, next)=>prev+next); print(sentence); //fold와 차이를 보시오 final numbers2 = numbers.reduce((prev, next)=>prev+next); print(numbers2); final sum = numbers.fold(0,(prev,next)=>prev+next); print(sum); } //reduce를 처음 실행하면 첫번째 파라미터에 첫번째 값이 들어가고 //다음에는 다음 값이 들어간다. //다시 실행하면 이전 값의 결과값이 첫 파라미터에 들어가고 다음파라미터에 다음 값을 보낸다. //반환되는 값이 처음에 준 타입과 같아야 한다. //다른 타입을 반환할 수 있는게 fold
cascading operator
void main() { List<int> even = [ 2,4,6,8 ]; List<int> odd = [ 1,3,5,7 ]; //cascading operator 펼쳐줌 //... print([...even, ...odd]);//[2, 4, 6, 8, 1, 3, 5, 7] print(even); //[2, 4, 6, 8] print([...even]); //[2, 4, 6, 8] }
ex
728x90