Flutter/Dart 문법

[Flutter] Record

Chafle 2023. 8. 8. 19:07
반응형

Record란

List를 규격화 하여 표현할 수 있는 기능

타입타입의 순서를 보장받을 수 있다.

 

ex.

이름과 나이를 추출하는 기능 구현해볼 때

 

기존에는

name과 age를 돌려받고 싶을 때 key값으로 리턴은 보통 아래와 같이 한다.

이렇게 되면 타입에 대한 보장을 받을 수 없다, list는 한가지로 타입을 정의 할 수 있기 때문이다.

nameAndAge(Map<String, dynamic> json) {
return [json['name'], json['age']];
}
void main() {
final result = nameAndAge({
  'name' : 'chassi',
  'age' : 34,
  
    print(result);
  //튜플에서는 $1.은 첫 번째 값을 의미하는데, .으로 자동완성을 들어가보면 String타입에 기반된 메서드들이 나온다.
  print(result.$1);
});

 

순서와 타입을 동시에 보장받고 싶다면, -> 일반괄호()를 사용하면 된다(튜플개념)

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

각각을 String과 int로 타입캐스팅 해준다.


 

기존 코드와 튜플과 비교

원래라면, String또는 int가 될 수 있다고 타입을 지정할 수 있는 방법이 dynamic으로 casting한 건데,

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

 

 

아래와같이 이런식으로 ()괄호를 사용하여 타입을 확정받을 수 있다

List<(String, int)> getNewJeansWithType() {
  //key값을 정의 안했으니 key값을 지워줘
  return [
    (
      "민지",
       21
      ),
        (
      "혜린",
      18
      ),
  ];
}

 

 


간단히 이름을 붙여주는 방법(일반파라미터)

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

named 파라미터

List<({String name, int age})> getNewJeansWithType3() {
    return [
    (
      name: "민지",
       age: 21
      ),
        (
      name: "혜린",
      age: 18
      ),
  ];
}

 

 


개수는 무한하게 갈 수 있다

(String name, String group, int age) getMinJi() { 
return ('민지', '뉴진스', 19);
}

 

반응형