[Dart] Data Type의 종류

slight-snow·2023년 9월 14일
0

Dart

목록 보기
3/3
post-thumbnail

1. 기본 Type 정리

기본적으로 흔히 사용하는 type에는 String, int, bool, double 이렇게 4가지가 있다.

void main() {
	String name = '이름'; //string
    int number = 123; //number
    bool boolean = true; //boolean
    double decimal = 10.99; //decimal
}

num이라는 type도 있는데, intdouble을 모두 사용 가능한 type이라고 보면 된다.

void main() {
	num number = 123; //OK
    num decimal = 123.99; //OK
}

2. List

JavaScript의 배열인 Array와 형태가 유사하다.
type을 지정하여 선언할 수도 있으며, 일반적으로 var를 통해 선언한다.

void main() {
	var numbers = [1, 2, 3, 4];
    // List<int> numbers = [1, 2, 3, 4]; 와 동일하다.
}

var로 선언하더라도 자동으로 List<type>으로 인식하기 때문에 문제없다.

.add() 매서드를 통해 List에 요소를 추가할 수도 있다.

void main() {
	var numbers = [1, 2, 3, 4];
    numbers.add(1);
    
    print(numbers); //[1, 2, 3, 4, 1]
}

이뿐만 아니라, 놀랍게도 Dart에는 List내에서 조건문으로 데이터를 추가할 수 있다.

void main() {
	var giveMeFive = true;
    var numbers = [
    	1,
        2,
        3,
        4,
        if (giveMeFive) 5,
    ];
    
    print(numbers); //[1, 2, 3, 4, 5]
}

위의 예시를 들어, true 값을 할당한 giveMeFive는 항상 참이므로, if조건문에 부합된다.
그렇기에 List의 마지막 요소로 5가 추가되고 콘솔에 나타나게 되는 것이다.

이를 Collection If라고 부른다.

if문과 함께 List에 사용되는 문법이 있으니, 바로 for문이다.

void main() {
	var subscribers = ['John', 'Eric', 'Anna'];
    var viewers = [
    	'Tom',
        'Cindy',
        for (var subscriber in subscribers) '★$subscriber',
    ]
    
    print(viewers); //[Tom, Cindy, ★John, ★Eric, ★Anna]
}

이렇게 Listfor문을 적용하여 요소로 추가하는 것도 가능하다.

이를 Collection For이라 부른다.


3. String Interpolation

Collection For의 예시 코드를 보면서 뜬금없이 $기호가 나타났다.
$기호는 변수값을 사용하게 해주는 것으로, 다음과 같이 활용할 수 있다.

void main() {
	var name = '소설';
    var age = 26;
    var message = '안녕하세요, 제 이름은 \'$name\'입니다. 저는 2년 뒤면 ${age + 2}살이 됩니다.';
    
    print(message); //안녕하세요, 제 이름은 '소설'입니다. 저는 2년 뒤면 28살이 됩니다.
}

이런식으로 말이다!

String을 사용하기 위해 '', ""를 사용하다보면 문장 중간에 '', ""를 넣었을 때

이런식으로 원치 않는 끊김을 마주할 수 있다.

그럴 때 위의 예시와 같이 \를 사용하여 탈출시키면 끊기지 않고 정상적으로 문장을 마칠 수 있다.


4. Map

MapJavaScriptObject와 굉장히 유사하다.
List와 마찬가지로 var를 통해 선언하더라도 자동으로 Map으로 인식한다.

void main() {
	var player = {            // Map<String, Object> player = { 과 같다.
    	'name': '소설',
        'exp': 25.97,
        'superpower': false,
    }
    
    Map<int, bool> example = {
    	1: true,
        2: false,
        3: true,
    }
}

예시를 보면 알겠지만, Map<type, type>으로 선언을 할 수 있다.
Dart는 모두 객체로 이루어져 있기 때문에, Dart에서의 Object라는 typeany와 같다.


5. Set

SetDart의 독특한 type으로, 유니크한 요소들로 구성되는 하나의 세트를 나타낸다.
{}안에 변수들을 입력하여 var로 선언할 수 있으며, Set<type>으로 직접 선언해줄 수도 있다.

void main() {
	var numbers = {1, 2, 3, 4}; // Set<int> numbers = {1, 2, 3, 4}; 와 같다.
    numbers.add(1);
    numbers.add(1);
    numbers.add(1);
    numbers.add(1);
    numbers.add(1);
    
    print(numbers); // {1, 2, 3, 4}
}

.add() 매서드로 요소들을 추가하였음에도 불구하고 최초의 값이 변경되지 않았음을 알 수 있다.


profile
주니어 개발자의 기억을 위한 기록 :)

0개의 댓글