반응형
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);
}
반응형
'Flutter > Dart 문법' 카테고리의 다른 글
[Flutter] list generate (0) | 2023.06.28 |
---|---|
[Dart] Stream (Future와 차이점) (0) | 2023.03.24 |
[Dart] Async에 대하여 (Future- delayed / await) (0) | 2023.03.24 |
[Dart] List<Map<>>을 Class로 전환하기(연습) (0) | 2023.03.23 |
[Dart] cascading (0) | 2023.03.23 |