Dart Data Types(데이터 타입)
1. basic Data Types
void main() {
String name = 'taek' or "taek"; // String (' 와 " 둘다 가능)
boole alive = true; // boolean
int age = 12; // integer
double money = 12.99; // double
num x = 12; // int와 double의 부모클래스 num
num = 1.12;
}
Dart는 object와 class로 이루어져 있다는 것을 꼭 기억하자.
완전한 객체지향언어이다.
2. Lists
void main() {
var numbers = [1, 2, 3, 4];
// List<int> numbers = [1, 2, 3, 4]; // 타입으로 선언도 가능
}
코드를 입력하고 numbers에 마우스오버를 해보면 type: List<int> 인 것을 알 수 있다.
Tips.
list 마지막에 , 를 적고 다음 단축키를 입력하면 자동으로 formatting해준다. (DartPad)
Window : Alt + Shift + F
Mac : Options + Shift + F
Dart에서 List는 collection if / collection for 을 지원한다.
- collection if
조건에 따라 List에 데이터를 결정한다.
원래는 이렇게 추가해야하는 코드를 오른쪽처럼 작성할 수 있다.
collection for 는 String Interpolation을 이해하고 그 다음 설명하겠다.
3. String Interpolation
void main() {
var name = 'taek';
var age = 10;
var greeting = 'Hello everyone, my name is $name and I\'m ${age+2} nice to meet you!';
print(greeting);
}
원하는 부분에 '$' 표시를 써서 변수명을 적어주면 된다.
age같이 계산도 가능하다. ( {} 중괄호 써줘야함)
나는 항상 ${} 을 쓰려고 한다.
4. Collection For
void main() {
var oldFriends = ['kim', 'park'];
var newFriends = [
'na',
'lee',
for(var friend in oldFriends) '!@ $friend',
];
print(newFriends);
}
새로운 배열을 생성하는데 이전에 있던 리스트에 수정해서 추가하고 싶을 때 사용한다.
예를 들면 메뉴나 navigation bar를 만드는데 user가 로그인 전 후에 나타내는 버튼을 추가하고 싶을 때 이 기능이 굉장히 시간을 아껴준다.
5. Maps
void main() {
var player = {
'name': 'taek',
'xp': 19.99,
'superpower': false,
};
Map<List<int>, bool> map = {
[1,2,3,5]: true,
};
}
Dart의 Map은 Java와 같다고 생각하면 된다. key와 value로 이루어져 있다.
var로 선언해서 타입추론으로 컴파일러가 결정하게 만들 수도 있고(player),
타입으로 선언해서 할 수도 있다(map).
key와 value 모두 어떤 타입이든 가능하다.
- key에다가 리스트를 넣을 필요는 없겠지만 이렇게도 가능하다
만약 API로 받아온 데이터를 저장하려면 Map 보다는 class를 사용하는 것을 추천한다.
6. Sets
set과 List의 차이는 set은 값들이 유니크하다는 점이다.
void main() {
var numbers = {1, 2, 3, 4};
// Set<int> numbers = {1, 2, 3, 4}
numbers.add(1);
numbers.add(1);
print(numbers);
}
주의 - List는 대괄호 [] / Set은 중괄호 {}
같은 1을 추가해도 위 코드를 작성해서 실행해보면 결과는
{1,2,3,4}
로 나온다.