본문 바로가기
🥖 Bread Basics/Flutter

Record(튜플), Destructuring

by BreadDev 2025. 4. 25.
728x90
void main() {
  final result = nameAndAge({'name': '민지', 'age': 20});

  print(result);
  print(result.$1);
  print(result.$2);
  print('---------------');
  final result3 = getNewJeansWithType();
  for (final item in result3) {
    print(item.$1);
    print(item.$2);
  }
  print(result3);
  print('---------------');
  final result4 = getNewJeansWithType2();
  for (final item in result4) {
    print(item.name);
    print(item.age);
  }
  print(result3);
  print('---------------');
  final result5 = getMinji();
  print(result5);
}

// Record
(String, int) nameAndAge(Map<String, dynamic> json) {
  return (json['name'] as String, json['age'] as int);
}

List<Map<String, dynamic>> getNewJeans() {
  return [
    {'name': '민지', 'age': 20},
    {'name': '혜린', 'age': 18},
  ];
}

List<(String, int)> getNewJeansWithType() {
  return [('민지', 20), ('혜린', 18)];
}

List<({String name, int age})> getNewJeansWithType2() {
  return [(name: '민지', age: 20), (name: '혜린', age: 18)];
}

(String name, String group, int age) getMinji() {
  return ('민지', '뉴진스', 19);
}
------------------------------------------------
void main() {
  final (name, age) = ('민지', 20);

  print(name);
  print(age);

  final newJeans = ['민지', '혜린'];

  final [a, b] = newJeans;
  print(a);
  print(b);

  final numbers = [1, 2, 3, 4, 5, 6, 7, 8];
  final [x, y, ..., z] = numbers;
  print(x);
  print(y);
  print(z);

  final [xx, yy, ...rest, zz] = numbers;
  print(xx);
  print(yy);
  print(zz);
  print(rest);

  final [xxx, _, yyy, ...rest2, zzz, _] = numbers;
  print(xxx);
  print(yyy);
  print(zzz);
  print(rest2);

  final minJiMap = {'name': '민지', 'age': 19};
  final {'name': name3, 'age': age3} = minJiMap;
  print(name3);
  print(age3);
  print('-------------');
  final minjiIdol = Idol(name: '민지', age: 19);
  final Idol(name: name4, age: age4) = minjiIdol;
  print(name4);
  print(age4);
  
}

class Idol {
  final String name;
  final int age;
  
  Idol({
    required this.name,
    required this.age,
  });
}
------------------------------------------------
void main() {
  // Validation
  final minJi = ('민지', 20);
  final (name as String, age as int) = minJi;

  print(name);
  print(age);

  //   switcher('aaa');
  //   switcher('bbb');
  //   switcher(['1', '2']);
  //   switcher([1,2]);
  //   switcher([1,2,3]);
  //   switcher([1,2,3,4]);
  //   switcher([6,'9']);
  switcher(7);
  switcher(17);

  print(switcher2(5, true));
  print(switcher2(7, true));

  forLooper();
  ifMatcher();
}

void switcher(dynamic anything) {
  switch (anything) {
    case 'aaa':
      print('match: aaa');
    case ['1', '2']:
      print('match: [1, 2]');
    case [_, _, _]:
      print('match: [_,_,_]');
    case [int a, int b]:
      print('match: [int $a, int $b]');
    case < 10 && > 5:
      print('match: < 10 && > 5');

    default:
      print('no match');
  }
}

String switcher2(dynamic val, bool condition) => switch (val) {
  5 => 'match: 5',
  7 when condition => 'match 7 and true',
  _ => 'no match',
};

void forLooper() {
  final List<Map<String, dynamic>> members = [
    {'name': '민지', 'age': 20},
    {'name': '혜린', 'age': 19},
  ];

  for (final member in members) {
    print(member['name']);
    print(member['age']);
  }

  print('------------------------------');
  for (var {'name': name, 'age': age} in members) {
    print(name);
    print(age);
  }
}

void ifMatcher() {
  final minji = {'name': '민지', 'age': 20};
  print('------------------------------');
  if (minji case {'name': String name, 'age': int age}) {
    print(name);
    print(age);
  }
}
(민지, 20)
민지
20
---------------
민지
20
혜린
18
[(민지, 20), (혜린, 18)]
---------------
민지
20
혜린
18
[(민지, 20), (혜린, 18)]
---------------
(민지, 뉴진스, 19)
------------------------------------------------
민지
20
민지
혜린
1
2
8
1
2
8
[3, 4, 5, 6, 7]
1
3
7
[4, 5, 6]
민지
19
-------------
민지
19
------------------------------------------------
민지
20
match: < 10 && > 5
no match
match: 5
match 7 and true
민지
20
혜린
19
------------------------------
민지
20
혜린
19
------------------------------
민지
20

'🥖 Bread Basics > Flutter' 카테고리의 다른 글

Dart 언어 기본기 배우기  (0) 2025.04.28
mixin, sealed, base 클래스  (0) 2025.04.25
Future, async, await, stream, listen, sink, yield  (0) 2025.04.25
형변환, map, where, reduce/fold, 체이닝  (0) 2025.04.25
@ovveride  (0) 2025.04.24
OOP의 상속!!  (0) 2025.04.24
[Flutter] Hot Reload란?  (0) 2025.04.23