ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Dart 102
    Flutter/Dart 2023. 4. 28. 16:47
    728x90

    다트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

    'Flutter > Dart' 카테고리의 다른 글

    Dart 101  (0) 2023.04.28
designitlikesloth