#2.1 Basic Data Type
void main() {
String name = "dart";
bool alive = true;
int age = 12;
double money = 59.99;
num x = 12;
x = 1.1;
}
String을 사용할 때 ' ', " " 모두 사용 가능하다.
모든 자료형은 object로 이루어져있다. (Dart가 객체 지향 언어로 불리는 이유)
int와 double 같은 경우 num에서 파생된 것을 확인 할 수 있는데, 그래서 num은 integer과 double의 값을 모두 넣을 수 있다.
#2.1 Lists
void main() {
var numbers = [
1,
2,
3,
4,
];
}
리스트는 다음과 같은 방법으로 만들 수 있는데, var과 List<int>는 똑같게 작동한다.
VS Code나 DartPad를 사용한다면 List 마지막에 ,(쉼표)를 붙여줌으로써 자동으로 여러 줄로 포매팅 된다.
number.first 가장 첫번째 요소를 가져다준다
number.last 가장 마지막 요소를 가져다준다
collection if, collection for
void main() {
var giveMeFive = true;
var numbers = [
1,
2,
3,
4,
];
if (giveMeFive) {
numbers.add(5);
}
}
위처럼 if문을 길게 작성해야 하는 코드를 아래처럼 편하게 작성 가능하게 하는 것이 collection if 이다.
void main() {
var giveMeFive = true;
var numbers = [
1,
2,
3,
4,
if (giveMeFive) 5,
];
print(numbers);
}
두 코드의 값은 모두 [1, 2, 3, 4, 5] 로 동일하다.
#2.2 String Interpolation
String interpolation은 text에 변수를 추가하는 방법이다.
void main() {
var name = 'dart';
var greeting = 'Hello everyone, my name is $name, nice to meet you!';
print(greeting);
}
다음을 출력하면, Hello everyone, my name is dart, nice to meet you! 라고 출력되는 것을 확인 할 수 있다.
※ 큰따음표 사용 가능, 달러기호뒤에 반드시 변수
void main() {
var name = 'dart';
var age = 10;
var greeting = "Hello everyone, my name is $name, and I'm ${age+2}";
print(greeting);
}
변수 값을 담기만 한다면 $(달러 기호) 뒤에 변수 이름을 적어주면 된다.
무언가를 계산하고 싶다면 ${내용} 을 적으면 된다.
#2.3 Collection for
void main() {
var oldFriends = ['dart', 'lynn'];
var newFriends = [
'lewis',
'ralph',
'darren',
for(var friend in oldFriends) "♡ $friend",
];
print(newFriends);
}
oldFriends를 newFriends 조금 바꿔서 추가하기 위해서는 다음과 같은 코드를 작성 가능하다. (Collection for)

코드 실행 시 oldFriends list에 있는 이름만 하트가 붙어서 출력되었다.
긴 코드를 짧게 표현하고 속도를 빠르게 할 수 있다는 것이 장점이다.
#2.4 Maps
Map은 Javascript나 TypeScript의 object, python의 disctionary와 같다.
void main() {
var player = {
'name': 'dart',
'xp':19.99,
'superpower':false
};
}
key와 value로 이루어진 자료구조 Map을 위와 같이 만들었을때 Key는 모두 String이 되고 value는 object가 된다.
object는 어떤 자료열이든 될 수 있다. 아니면 컴파일러가 지정해주기 전에 직접 정의 하는 것도 가능하다.
void main() {
Map<int, bool> player = {
1: true,
2: false,
3: true
};
}
위처럼 미리 자료형을 정의 해주는 것도 가능하다. Map<int, bool> 대신 var을 사용해도 컴파일러가 자동으로 int, bool로 정의한다.
void main() {
Map<List<int>, bool> player = {
[1, 2, 3, 4, 5]: true,
};
}
이런 복잡한 key 설정도 가능하다.
Dart에서는 모두 class 이기 때문에, Map도 마찬가지로 method 와 property를 가지고 있다.
void main() {
List<Map<String, Object>> players =[
{'name':'dart','xp': 19999.999},
{'name':'dart','xp': 19999.999},
];
}
key는 String이고 value는 Object라서 무엇이든 올 수 있기 때문에 double 값을 부여하면 다음과 같은 코드도 생성 가능하다.
#2.5 Sets
void main() {
var numbers = {1, 2, 3, 4};
}
void main() {
Set<int> numbers = {1, 2, 3, 4};
}
dart에서 set은 다음과 같은 방법으로 만들 수 있다.
void main() {
Set<int> numbers = {1, 2, 3, 4};
numbers.add(1);
numbers.add(1);
numbers.add(1);
print(numbers);
}
Set의 특징은 위와 같이 {1, 2, 3, 4} 가 있는 경우에 아무리 1을 많이 추가하더라도 아래와 같이 출력된다.
