Dart

[Dart] Dart Docs - Types (Records, Collections)

  • -
728x90

Records

Record는 이름있는 필드(named fields)를 갖는 불변 객체를 생성하는데 사용된다. 이는 데이터 모델의 생성 및 사용을 단순화하고 가독성을 향상시키는데 도움이 된다.

다른 컬렉션 유형(List, Set, Map...등)과 마찬가지로 여러 개체를 하나의 개체로 묶을 수 있지만 다른 컬렉션 유형과 달리 Record는 크기와 유형이 고정되어있다.

 

Record는 Record라는 클래스가 추상클래스로 존재하지만 사용되지 않으며, 타입 선언에는 괄호 안에 들어간 인수 목록을 런타임에서 갖는 '익명' 타입이다. 또한 필드의 길이, 위치, 이름이 저장되며 코드 값과 레코드 유형은 인수 목록 및 단순화된 함수 유형 매개변수 목록과 유사하게 작성된다.

 

사용법

 

 

  • positional 필드에 기록된 이름은 문서화 목적으로만 사용되며 프로그램에 아무런 영향을 미치지 않는다.
// not work
(String name, int age, bool isActive) record3 = (name:'wonillism', age:1, isActive:false);
// work
(String name, int age, bool isActive) record4 = ('wonillism', 1, false);

 

https://dart.dev/language/records

 

Records

Summary of the record data structure in Dart.

dart.dev

 

Collections

Lists

대부분의 프로그래밍 언어에서 Array(배열)로 불리는 type을 Dart에서는 List로 제공한다. 

length 메소드로 길이를 확인할 수 있다.

void main() {
  List arr = [1,2,3];
  
  print(list.length);
}

 

Sets

Dart에서 set도 지원한다. set은 정렬되지 않은 원소들의 집합이라고 볼 수 있다.

var names = <String>{};
// Set<String> names = {}; // This works, too.
// var names = {}; // Creates a map, not a set.

Set<String> hi = {"hello", "name"};
  
print(hi); // {"hello", "name"}
hi.add('age');
print(hi); // {"hello", "name", "age"};

 

Maps

Map은 일반적으로 key:value 형태의 타입이다. key와 value 모두 모든 유형의 객체가 될 수 있다.

var gifts = {
  // Key:    Value
  'first': 'partridge',
  'second': 'turtledoves',
  'fifth': 'golden rings'
};

var nobleGases = {
  2: 'helium',
  10: 'neon',
  18: 'argon',
};

// ------------------------------

var gifts = Map<String, String>();
gifts['first'] = 'partridge';
gifts['second'] = 'turtledoves';
gifts['fifth'] = 'golden rings';

var nobleGases = Map<int, String>();
nobleGases[2] = 'helium';
nobleGases[10] = 'neon';
nobleGases[18] = 'argon';

 

Operators

Spread operators

Dart는  spread(...) operator와 null-aware spread(...?) operator를 제공한다.

final list = [1,2];
final list2 = [0, ...list];
var list3;
final list4 = [0,1,9, ...?list3];

print(list);
print(list2);
print(list4);

 

 

Control-flow operators

Dart에서는 pytho과 같이 한줄 코딩도 가능하게 해준다.

// collection if
var nav = ['Home', 'Furniture', 'Plants', if (promoActive) 'Outlet'];

// collection if-case
var nav = ['Home', 'Furniture', 'Plants', if (login case 'Manager') 'Inventory'];

// collection for
var listOfInts = [1, 2, 3];
var listOfStrings = ['#0', for (var i in listOfInts) '#$i'];
assert(listOfStrings[1] == '#1');

 

 

 

 

728x90
300x250
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.