[Dart] 자료형
Dart의 공식문서에 잘 설명돼 있긴 하지만 영어로 돼 있어서 번역해 보기 귀찮기 때문에 한글로 정리해둔다.
Dart의 자료형 종류는 아래와 같다.
Runes는 클래스인데 사용법을 보니 문자의 유니코드 숫자를 가져올 때 사용하는 것 같아 생략한다.
- int
- double
- String
- bool
- List<T>
- Set
- Map<K, V>
이제 하나씩 확인해본다.
int
https://dart.dev/guides/language/language-tour#numbers
플랫폼에 따라 64비트 이하의 정수값이다. 기본 플랫폼에서 값은 -2^63에서 2^63-1 사이일 수 있다. 웹에서 정수값은 자바스크립트 숫자로 표시되며 -2^53에서 2^53-1일 수 있다
공식문서에서 말하는 기본 플랫폼은 안드로이드, iOS를 말하는 것으로 생각된다. 앱과 웹에서 사용될 수 있는 범위가 각각 다르니 주의만 하면 될 것 같다. 다른 언어들과 같이 사용법은 대충 아래와 같다.
void main() {
int number1 = 1;
int number2 = 2;
print(number1 + number2); // 3
}
double
Dart에는 float 자료형이 없고 double만 있다.
void main() {
double a = 1.0;
double b = 1.0;
print(a + b); // 2
}
String
설명이 필요없다. 특이점이라면 코틀린처럼 문자열 안에 $를 사용해서 변수값을 바로 표시할 수 있다.
void main() {
int num = 1;
String a = "하이 $num";
print(a); // 하이 1
}
그래서 이렇게도 사용할 수 있다.
void main() {
int num1 = 1;
int num2 = 2;
String a = "$num1 + $num2는 ${num1 + num2}";
print(a); // 1 + 2는 3
}
bool
boolean으로 만들어주지 애매하게 bool이라고 만들어놔서 자꾸 헷갈린다. 그 외에는 별 거 없다.
void main() {
bool isReady = false;
bool isClicked = true;
}
List
List를 만들고 직접 값을 넣을 때는 [] 안에 넣는다. List 우측에 제네릭을 쓰는 것은 똑같다.
코틀린처럼 특정 인덱스에서 값을 찾을 때 [] 안에 숫자를 넣고 그 위치의 값을 가져올 수 있다.
void main() {
List<int> numbers = [1, 2, 3, 4, 5];
print(numbers); // [1, 2, 3, 4, 5]
print("numbers의 1번 인덱스 값 : ${numbers[1]}"); // numbers의 1번 인덱스 값 : 2
}
Map
Map을 만들고 직접 값을 넣을 때는 {} 안에 넣는다. List와 똑같이 Map 우측에 키값들의 제네릭을 쓴다.
키에 매핑된 값을 가져올 수 있지만 값으로 키를 가져올 수 없다. 대신 키밸류들을 각각 출력해서 확인할 수는 있다.
void main() {
Map<String, String> map = {
"a" : "에이",
"b" : "비"
};
print(map); // {a: 에이, b: 비}
print("a키에 매핑된 값 : ${map["a"]}"); // a키에 매핑된 값 : 에이
print("에이 value에 매핑된 키 : ${map["에이"]}"); // 에이 value에 매핑된 키 : null
print("map의 key들만 출력 : ${map.keys}"); // map의 key들만 출력 : (a, b)
print("map의 value들만 출력 : ${map.values}"); // map의 value들만 출력 : (에이, 비)
}
Set
Set도 다른 언어에서의 Set과 별 차이 없다.
void main() {
final Set<String> nameSet = {"a", "b", "a"};
print(nameSet); // {a, b}
print(nameSet.contains("c")); // false
}