함수형 프로그래밍의 기본은 형변환이다
.asMap()
.toSet()
Set.from(List) : 리스트로부터 Set를 만들기
.toList()













void main() {
final List<Map<String, String>> people = [
{'name': '지수', 'group': '블랙핑크'},
{'name': '로제', 'group': '블랙핑크'},
{'name': 'RM', 'group': 'BTS'},
{'name': '뷔', 'group': 'BTS'},
];
print(people);
// class 형태로 만들기
final parsedPeople = people
.map((x) => Person(
name: x['name']!, // !는 값이 존재한다고 명시해주는 기능
group: x['group']!))
.toList();
print(parsedPeople);
for (Person person in parsedPeople) {
print(person.name);
print(person.group);
}
final bts = parsedPeople.where((x) => x.group == 'BTS');
print(bts);
// chaining , 중간 매개변수를 생략해 코드가 간결해짐
// 다만, 나중에 다른 사람들과 협업 혹은 기억이 안날 때를 대비해 코멘트가 필요함
final result = people
.map((x) => Person(name: x['name']!, group: x['group']!))
.where((x) => x.group == 'BTS')
.fold<int>(0, (prev, next) => prev + next.name.length);
print(bts);
}
// class는 데이터 구조가 형식화/명식화되어 있기 때문에,
// class를 통해서 instance를 생성하는 게 구조화되어 있음(데이터 형식, 오타 방지 등)
class Person {
final String name;
final String group;
Person({required this.name, required this.group});
@override
// Class 출력형태 바꾸기
String toString() {
return 'Person(name: $name, group: $group)';
}
}
[{name: 지수, group: 블랙핑크}, {name: 로제, group: 블랙핑크}, {name: RM, group: BTS}, {name: 뷔, group: BTS}]
[Person(name: 지수, group: 블랙핑크), Person(name: 로제, group: 블랙핑크), Person(name: RM, group: BTS), Person(name: 뷔, group: BTS)]
지수
블랙핑크
로제
블랙핑크
RM
BTS
뷔
BTS
(Person(name: RM, group: BTS), Person(name: 뷔, group: BTS))
(Person(name: RM, group: BTS), Person(name: 뷔, group: BTS))