본문 바로가기

DART

[DART] Dart 3.0 신규 문법

1. Records

 

Records are an anonymous, immutable, aggregate type. Like other collection types, they let you bundle multiple objects into a single object. Unlike other collection types, records are fixed-sized, heterogeneous, and typed.

Records are real values; you can store them in variables, nest them, pass them to and from functions, and store them in data structures such as lists, maps, and sets.

레코드는 익명의 불변 집계 유형입니다. 다른 컬렉션 유형과 마찬가지로 여러 개체를 단일 개체로 묶을 수 있습니다. 다른 컬렉션 유형과 달리 레코드는 크기가 고정되고 유형이 다르며 유형이 지정됩니다.

레코드는 실제 값입니다. 변수에 저장하고, 중첩하고, 함수에 전달하고, 목록, 맵, 집합과 같은 데이터 구조에 저장할 수 있습니다.

 

 

console 출력

 

Records 안의 값을 가져오고 싶을 때,  result[0]  이 아닌  result.$1  로 값을 가져올 수 있다. (Records는 1부터 시작)

 

 

일반적으로 Map 변수 안에 다양한 타입이 들어있는 경우 dynamic을 사용해왔지만, Records는 여러 타입도 들어가 있는 순서대로 정확하게 입력해 줄 수 있다.

 

 

console 출력

 

Map 변수 또는 named parameter 처럼 각 값에 이름을 붙여줄 수도 있다. 

 

하지만 String 타입으로 쓰지 않고 그냥 텍스트만 입력해 주면 된다. 

 

 

이름을 붙일 경우 기존처럼  $1  방식으로 값을 가져올 수 없게 된다.

 

 

console 출력

 

자바스크립트에서 사용했던 구조분해할당(Destructuring)도 가능하다.

 

 

console 출력

번외로 다른 타입들도 구조분해할당을 사용할 수 있으며, Rest 문법(+ Spread 문법도!)도 마찬가지로 사용 가능하다. (자주 쓰지 않아서 Dart에서도 가능한지 오늘 알게 됐다💦)

 

 

 추가 Tip   Rest 문법의 중간의  ...  으로 버려지는 변수들을 재사용하고 싶다면 Spread 문법처럼 임의의 변수명을 붙여주면 된다.

 

console 출력

 

 

 추가 Tip   만약 중간에 쓰고 싶지 않은, 버리고 싶은, 무시하고 싶은 값이 있다면  을 넣어주면 된다.

 

console 출력

리스트의 2, 10 두 값이 버려지면서 변수 b와 c의 값이 변경되었다.

 

 

 추가 Tip   Map 변수의 구조분해할당

 

console 출력

 

 

 

 

2. Patterns

 

Patterns are a syntactic category in the Dart language, like statements and expressions. A pattern represents the shape of a set of values that it may match against actual values.

패턴은 명령문 및 표현식과 같은 Dart 언어의 구문 범주입니다. 패턴은 실제 값과 일치시킬 수 있는 값 집합의 모양을 나타냅니다.

...이어서

 

 

 

'DART' 카테고리의 다른 글

[DART] connectivity_plus Package  (0) 2022.08.30
[DART] flutter_dotenv Package  (0) 2022.08.26
[DART] 기본 문법 익히기  (0) 2022.08.21