728x90
https://dart.dev/language/records 에 공식적인 설명이 되어 있다.
Records는 익명성, 불변성, 집계성을 가진 타입이며
다른 컬렉션 유형(List, Set, Map 등등)과 마찬가지로 여러 개체를 하나의 개체로 묶을 수 있다.
하지만 다른 컬렉션 유형과 달리 Record는 크기와 유형이 고정되어 있다.
void main() {
final result = person({
'name': '홍길동',
'age': 25
});
print(result); // (홍길동, 25)
print(result.$1); // 홍길동
print(result.$2); // 25
var record = ('first', a: 2, b: true, 'last');
print(record.$1); // Prints 'first'
print(record.a); // Prints 2
print(record.b); // Prints true
print(record.$2); // Prints 'last'
}
// 튜플로 반환하여 Type과 순서를 보장받을 수 있다.
// 튜플은 소괄호를 사용한다.
(String, int) person(Map<String, dynamic> json) {
return (json['name'] as String, json['age'] as int);
}
|
// Returns multiple values in a record:
(String, int) userInfo(Map<String, dynamic> json) {
return (json['name'] as String, json['age'] as int);
}
final json = <String, dynamic>{
'name': 'Dash',
'age': 10,
'color': 'blue',
};
// Destructures using a record pattern:
var (name, age) = userInfo(json);
/* Equivalent to:
var info = userInfo(json);
var name = info.$1;
var age = info.$2;
*/
|
void main() {
final result = getPersonWithType();
for(final item in result){
print(item);
}
print('-----------------------');
for(final item in result){
print(item.$1);
print(item.$2);
}
}
List<(String name, int age)> getPersonWithType() {
return [
('홍길동', 25),
('강감찬', 37),
('이순신', 33)
];
}
|
void main() {
final result = getPersonWithNameType();
for(final item in result){
print(item);
}
print('-----------------------');
for(final item in result){
print(item.name);
print(item.age);
}
}
List<({String name, int age})> getPersonWithNameType() {
return [
( name: '홍길동', age: 25),
( name: '강감찬', age: 37),
( name: '이순신', age: 33)
];
}
|
728x90
'Flutter 앱 > Dart 언어' 카테고리의 다른 글
getter & setter (0) | 2023.12.09 |
---|---|
Dart 직렬화(Serialization) 및 역직렬화(Deserialization) (0) | 2023.12.08 |
Dart Collection (0) | 2022.06.28 |
Dart Class(클래스) (0) | 2022.06.27 |
Dart Asynchronous programming(비동기 프로그래밍) (0) | 2022.06.23 |