Dart 언어 오답노트 : 29. map()

샤워실의 바보·2023년 10월 26일
0
post-thumbnail
void main() {
  List<String> blackPink = [
    '로제',
    '지수',
    '리사',
    '제니',
  ];

  final newBlackPink1 = blackPink.map((member) {
    return '블랙핑크 $member';
  });
  print(blackPink);
  print(newBlackPink1.toList());

  final newBlackPink2 = blackPink.map((member) => '블랙핑크 $member');
  print(blackPink);
  print(newBlackPink2.toList());

  print(blackPink == newBlackPink1);
  print(blackPink == newBlackPink2);

  // [1.jpg, 3.jpg, 5.jpg, 7.jpg, 9.jpg]
  String number = '13579';
  final parsed = number.split('').map((member) => '$member.jpg').toList();
  print(parsed);

  Map<String, String> dictionary = {
    'Harry Potter': '해리 포터',
    'Ron': '론',
    'Hermione': '헤르미온느',
  };

  print(dictionary['Ron']);

  final keys = dictionary.keys.map((member) => 'HPC $member').toList();
  final values = dictionary.values.map((member) => '해리 포터 $member').toList();

  print(keys);
  print(values);

  final result = dictionary.map(
    (key, value) => MapEntry(
      '영어 $key',
      '한국어 $value\n',
    ),
  );

  print(dictionary);
  print(result);

  Set<String> blackPinkSet = {
    '로제',
    '지수',
    '리사',
    '제니',
  };

  final newSet = blackPinkSet.map((member) => '블랙핑크 $member').toSet();
  print(newSet);
}

이 Dart 프로그램은 리스트(List), 맵(Map), 세트(Set)와 map 함수를 이용해 데이터를 변환하고 출력하는 방법을 보여주고 있습니다.

1. 리스트(List)와 map 함수:

blackPink 리스트에는 블랙핑크의 멤버 이름이 문자열로 저장되어 있습니다. map 함수를 사용하여 각 멤버의 이름 앞에 "블랙핑크 "라는 문자열을 추가합니다.

final newBlackPink1 = blackPink.map((member) {
  return '블랙핑크 $member';
});
print(newBlackPink1.toList());

map 함수는 리스트의 각 요소를 순회하면서 주어진 함수를 적용하고, 결과를 새로운 Iterable 객체로 반환합니다. 이 예제에서는 toList() 함수를 사용하여 결과를 리스트로 변환한 다음 출력합니다.

출력 결과:

[블랙핑크 로제, 블랙핑크 지수, 블랙핑크 리사, 블랙핑크 제니]
final newBlackPink2 = blackPink.map((member) => '블랙핑크 $member');
print(newBlackPink2.toList());

이 예제에서는 화살표 함수를 사용하여 코드를 좀 더 간결하게 만들었습니다. 결과는 위와 동일합니다.

2. 리스트 비교:

print(blackPink == newBlackPink1); // false
print(blackPink == newBlackPink2); // false

blackPink 리스트와 newBlackPink1, newBlackPink2의 결과를 비교합니다. 둘 다 false를 반환합니다. 왜냐하면 newBlackPink1newBlackPink2Iterable<String> 타입이고, blackPinkList<String> 타입이기 때문입니다.

3. 문자열 분할과 map 함수:

String number = '13579';
final parsed = number.split('').map((digit) => '$digit.jpg').toList();
print(parsed);

number 문자열을 한 자리씩 분리하고, 각 숫자 뒤에 ".jpg"를 붙입니다. 결과는 리스트로 변환되어 출력됩니다.

출력 결과:

[1.jpg, 3.jpg, 5.jpg, 7.jpg, 9.jpg]

4. 맵(Map)과 map 함수:

Map<String, String> dictionary = {
  'Harry Potter': '해리 포터',
  'Ron': '론',
  'Hermione': '헤르미온느',
};

dictionary 맵에는 해리 포터 시리즈의 캐릭터 이름과 그들의 한국어 번역이 저장되어 있습니다.

final keys = dictionary.keys.map((key) => 'HPC $key').toList();
final values = dictionary.values.map((value) => '해리 포터 $value').toList();
print(keys);
print(values);

keysvalues 속성을 사용하여 맵의 키와 값을 각각 리스트로 변환하고 출력합니다.

출력 결과:

[HPC Harry Potter, HPC Ron, HPC Hermione]
[해리 포터 해리 포터, 해리 포터 론, 해리 포터 헤르미온느]
final result = dictionary.map(
  (key, value) => MapEntry(
    '영어 $key',
    '한국어 $value',
  ),
);
print(result);

map 함수를 사용하여 맵의 모든 키-값 쌍을 새로운 키-값 쌍으로 변환합니다.

5. 세트(Set)와 map 함수:

Set<String> blackPinkSet = {
  '로제',
  '지수',
  '리사',
  '제니',
};

final newSet = blackPinkSet.map((member) => '블랙핑크 $member').toSet();
print(newSet);

blackPinkSet 세트에는 블랙핑크 멤버들의 이름이 저장되어 있습니다. map 함수를 사용하여 각 멤버 이름 앞에 "블랙핑크 "를 추가하고 결과를 세트로 변환하여 출력합니다.

출력 결과:

{블랙핑크 로제, 블랙핑크 지수, 블랙핑크 리사, 블랙핑크 제니}

이 코드는 Dart의 map 함수를 사용하여 다양한 종류의 컬렉션을 변환하고 새로운 컬렉션을 생성하는 방법을 보여줍니다. map 함수는 매우 유연하고 강력하며, 컬렉션의 데이터를 처리할 때 유용하게 사용될 수 있습니다.

profile
공부하는 개발자

0개의 댓글