레코드란?
- 익명 객체
- 여러 개체를 단일 개체로 묶을 수 있다.
- 다른 컬렉션과 달리 크기가 고정되어 있다.
- 다른 컬렉션과 달리 유형이 다양하다.
사용 방법
//방법 1
var 변수명 = (요소1, 요소2, ...);
//방법 2
(자료형1, 자료형2, ...) 변수명 = (요소1, 요소2, ...)
//예시 1
var record = (a: 123, b: true);
//예시 2
(int a, bool b) record = (123, true);
//예시 3
({int a, bool b}) record = (a: 123, b: true);
레코드 필드
- named parameter의 경우에는 “변수명.필드명”으로 접근 가능하다.
- named parameter 이외의 파라미터들은 “변수명.$순번”으로 접근 가능하다.
var record = ('first', a: 2, b: true, 'last');
print(record.$1); //출력 : first
print(record.a); //출력 : 2
print(record.b); //출력 : true
print(record.$2); //출력 : last
동등성
- 레코드의 형태가 동일 하고 해당 필드의 값이 동일한 경우 두 레코드는 동일하다고 취급한다.
- 명명된 필드의 순서는 동등성에 영향을 주지 않는다.
(int x, int y, int z) point = (1, 2, 3);
(int r, int g, int b) color = (1, 2, 3);
print(point == color); //출력 : true