본문 바로가기
개발일지/임시카테고리

dart - functional program (펑셔널 프로그램)

by 다니엘의 개발 이야기 2025. 3. 24.
320x100
void main() {
  final List<Map<String, String>> people = [
    {'name': '지수', 'group': '블랙핑크'},
    {'name': '제니', 'group': '블랙핑크'},
    {'name': '뷔', 'group': 'BTS'},
    {'name': '정국', 'group': 'BTS'},
  ];

  print(people);
  // [{name: 지수, group: 블랙핑크}, {name: 제니, group: 블랙핑크}, 
  // {name: 뷔, group: BTS}, {name: 정국, group: BTS}]
  print('');

  final parsedPeople = people.map(
    // 각각 !를 넣어서 "이 값은 존재한다. 라고 전달해줘야한다."
    (x) => Person(name: x['name']!, group: x['group']!),
  ).toList();
  
  print(parsedPeople);
  // [Instance of 'Person', Instance of 'Person', Instance of 
  // 'Person', Instance of 'Person']
  print('');
  
  for (Person person in parsedPeople){
    print(person.name);
    print(person.group);
  }
//   지수
// 블랙핑크
// 제니
// 블랙핑크
// 뷔
// BTS
// 정국
// BTS
  print('');
  
  final bts = parsedPeople.where(
    (x) => x.group == 'BTS'
  );
  
  print(bts);
  print('');
  
  final result = people.map(
    (x) => Person(
      name: x['name']!,
      group: x['group']!
    )
  ).where((x) => x.group == 'BTS');
  
  print(result);
  // (Instance of 'Person', Instance of 'Person')
  print('');
}

class Person {
  final String name;
  final String group;

  Person({required this.name, required this.group});
}

 

functional program - 펑셔널 프로그램의 특징은 

 

1. 실행하는 대상인 List, Map, Set 등과 완전히 다른 새로운 값을 생성해준다.

2. 여러 함수들을 chaining 해줄 수 있어서 여러가지 새로운 것을 구현 할 수 있다.

300x250