Flutter

[Dart] Flutter를 위한 다트 기초문법 - 자료형 알아보기

didue 2024. 8. 19. 14:12
반응형

Data Types

Dart의 기본 자료형은 다음과 같다

Dart 자료형의 종류

  • string : '' 또는 "" 둘 다 사용 가능하여 초기값 정의 가능, $ 또는 ${}를 통해서 변수의 값을 차용하여 사용할 수 있다. 
  • bool
  • int
  • double
  • Object (class) : String, int, double과 같은 자료형도 타입정의가 class로 이루어진 객체 타입이다.
  • List : collection if, collection for를 지원
  • Map
  • Set

 

List

Collection-If

collection if는 List를 만들 때 조건으로 있을수도 없을수도 있는 값을 추가할때 사용할 수 있다.

코드로 예를 들자면, 기존의 클래식한 코드스타일 가이드에서 조건에 의해 List의 요소를 추가한다면 아래와 같은 방식으로 코드를 작성했을 것이다.

var isFive = true;
var numbers = [
    1,
    2,
    3,
    4,
];
if(isFive) {
    numbers.add(5);
}
print(numbers);

 

하지만, dart의 collection if를 활용한다면 아래와 같이 작성할 수 있게 된다.

var isFive = true;
var numbers = [
    1,
    2,
    3,
    4,
    if(isFive) 5,
];
print(numbers);

 

 

Collection-For

collection for은 List의 내부에서 for문을 사용하여 다른 List 등을 참조하여 요소를 정의 할 수 있도록 하는 구문이다.

예를 들어, 클래식 코드 스타일가이드에서는 부모와 자식 두 개의 List를 병합하여 family라는 List를 만들 때 자식의 요소는 depth 만큼 들여쓰기를 해야한다면 아래와 같은 다소 고루한 방법으로 작성되었을 것 이다.

var parents = ['baeja', 'didue'];
var children = ['hana', 'yoona'];
var family;

for(var parent in parents) {
    family.add(parent);
}
for(var child in children) {
    family.add('  $child');
}
print(family);

 

하지만, dart의 collection for를 활용한다면 아래와 같이 작성할 수 있게 된다.

var parents = ['baeja', 'didue'];
var children = ['hana', 'yoona'];
var family = [
    for(var parent in parents) parent,
    for(var child in children) '  $child'
];
print(family);

 

이 기능은 UI 인터페이스를 만들때, 메뉴 또는 네비게이션바 등에 유저의 로그인 여부에 따라 요소의 추가를 제어하는 데에 아주 유용하게 사용된다! 👍😎

 

 


Map

Map은 javascript, typescript의 Object(any)와 같은 역할을 하는 타입이다.
key-value 구조로 사용하며, 자료형을 사용할 때 var 또는 Map<T, T>로 선언하여 사용할 수 있다.

Map<String, Object> data = {
    'name' : 'didue',
    'age' : 31,
};

//map의 property 함수
//entries(), keys(), values(), contains()

 

 


Set

Set은 모든 요소는 unique의 특징을 가지는 중복이 불가한 List이다.
dart의 Set의 선언도 var 또는 Set로 사용할 수 있고 아주 간단하다.

한가지 차이점은 List는 요소를 대괄호[] 안에 넣어 관리했다면, Set은 중괄호{}에 요소를 넣어 사용한다.

Set<int> numbers = {1,2,3,4};
numbers.add(1);
numbers.add(1);
numbers.add(1);
print(numbers);         // {1,2,3,4}

List<int> numberlist = [1,2,3,4];
numberlist.add(1);
numberlist.add(1);
numberlist.add(1);
print(numberlist);         // [1,2,3,4,1,1,1]
반응형