Tech Blog of Pinomaker

어던 언어를 배우든 해당 언어에 대한 자료형에 대한 지식이 있어야 응용이 잘 된다. 특히 서버를 구축하거나 서버와의 통신을 하는 경우가 더욱 그러는 것 같다.

 

이번 포스팅의 목적은 Dart의 자료형에 대한 이해를 하는 것이다.

 

1. 기본 자료형

Dart에는 기본적으로 문자열의 String, 숫자형의 num, 그를 상속 받는 int, double이 있으며, 참과 거짓을 의미하는 bool이 있다.

 

String

void main() {
  String name = "김인후";
  var job = "developer"
}

Dart에서는 문자열을 사용하기 위해서는 위의 예시와 같이 키워드 String을 사용하거나, var로 선언하여 문자열을 할당하면 해당 변수는 문자열 변수가 된다.

 

int, double, num

void main() {
  int age = 22;
  double height = "172.1"
}

Dart의 자료형 중 숫자 타입은 num 타입과 num으로부터 파생된 int와 double 타입도 있다. num은 실제로는 사용이 되지 않는다고 하며, int는 정수이고, double은 소수까지 가능한 데이터다.

Dart에는 기본 자료형으로 문자열형

 

bool

void main() {
  bool isHappy = true;
  bool isFemale = false;
}

Dart에서 참과 거짓을 나타내기 위한 자료형은 bool이 있으며, Javascript의 boolean과 동일하게 사용이 된다.

 

 

2. 리스트

Javascript의 배열 등과 같이 Dart에서도 List, Map, Set등의 리스트 형태의 데이터가 있다.

 

List

Dart의 List는 타 언어의 List와 동일하다. 다만 같은 타입으로만 구성할 수 있는 것이 특징이며, List를 만드는 방법은 var를 이용하여 List 데이터를 대입하거나, List 키워드로 선언하는 방법이 있다.

void main() {
  var list = [1, 2, 3, 4];
}

위의 예시는 var를 이용하여 List를 생성하는 방법으로 List를 변수에 할당할 경우 그 변수는 List 타입이 된다. 아까 말했던 것과 같이 List에 숫자가 들어갔기에, List<int>가 되는 것이다.

 

void main() {
  List<String> fruitList = ["사과", "배", "수박"];
}

다른 선언 방식으로는 Java처럼 List<type>으로 선언하면 된다.

 

List에는 타 언어에는 많이 없는 colletion if와 collection for 기능을 제공하는 데, 이것은 리스트를 다룰 때 매우 편리한 기능이다.

 

collection if

void main () {
  bool isLoginned = true;
  List<String> menuList = ["Main", "Board", if(isLoginned) "MyPage"];
}

collection if는 List 데이터에 조건을 넣어서 그에 따른 데이터 분기 처리를 할 수 있는 매우 편리한 기능으로, Web 개발이나 App 개발을 진행할 때 로그인 여부에 따른 메뉴를 보여주는 등의 기능을 할 때 매우 편리하다.

 

String Interpolation

Collection for을 이해하기 위해선 String Interpolation에 대해서 미리 알아두면 좋다. 이 기능은 Javascript의 Template Literals와 같은 문자열 내에 변수를 쉽게 넣을 수 있는 기능을 수행한다.

void main() {
  String name = "pino";
  String text = "Hello My Name is $name"; // Hello My Name is pino
}

위와 같이 문자열 내에 '$' 키워드를 사용하여 문자열 내에 변수를 삽입하여 자유로운 사용이 가능하며, 심지어 아래와 같이 사용하면 연산도 가능하다.

void main() {
  int age = 23;
  String text = "1년 후 나의 나이는 {age + 1}이야";
}

 

collection for

collection for은 List에서 데이터를 추가할 때 용이한 것으로 Javascript의 Map과 ...arr를 합쳐놓은 느낌이다.

void main() {
  List<String> oldFruits = ["apple", "pear"];
  List<String> newFruits = ["banana", "tomato", for(var item in oldFruits) "good $item"
}

위의 예시를 보면 newFruits에 oldFruits를 추가하는 것을 볼 수 있는 데, 단순하게 그대로 추가하는 것이 아닌 for of처럼 각 요소를 편집할 수 있다.

 

 

3. Map과 Set

Map

map은 Python의 딕셔너리, Javascript의 객체와 같이 Key와 value로 구성된 데이터를 의미한다. Map도 Map 키워드를 이용하여 선언하거나, var로 선언하며 Map 데이터를 할당하는 두가지 방법으로 사용이 가능하다.

void main() {
  Map<String, String> person = {
    "name" : "inhoo",
    "job" : "developer"
  }
  
  var data = {
    "age" : 23,
  }
}

위를 보면 특이한 점이 있는 데, key와 value를 어떤 타입으로 해야할지 지정하거나 사용하여 그 타입으로 지정해야하며 그 타입으로만 사용해야한다는 것이다.

 

Set

Set은 해당 리스트에 모든 요소가 unique해야하는 자료형이며, Dart에서 아래와 같이 쉽게 생성할 수 있다.

void main() {
  Set<int> pk = {1,2,3,4};
}

'F.E > Dart, Flutter' 카테고리의 다른 글

[Dart] Dart의 함수에 대해서 알아보자!  (0) 2023.01.09
[Dart] 변수에 대해서 알아보자  (0) 2023.01.08
profile

Tech Blog of Pinomaker

@pinomaker

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!