기본적으로 흔히 사용하는 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
도 있는데, int
와 double
을 모두 사용 가능한 type
이라고 보면 된다.
void main() {
num number = 123; //OK
num decimal = 123.99; //OK
}
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]
}
이렇게 List
에 for
문을 적용하여 요소로 추가하는 것도 가능하다.
이를 Collection For이라 부른다.
Collection For의 예시 코드를 보면서 뜬금없이 $
기호가 나타났다.
$
기호는 변수값을 사용하게 해주는 것으로, 다음과 같이 활용할 수 있다.
void main() {
var name = '소설';
var age = 26;
var message = '안녕하세요, 제 이름은 \'$name\'입니다. 저는 2년 뒤면 ${age + 2}살이 됩니다.';
print(message); //안녕하세요, 제 이름은 '소설'입니다. 저는 2년 뒤면 28살이 됩니다.
}
이런식으로 말이다!
String
을 사용하기 위해 ''
, ""
를 사용하다보면 문장 중간에 ''
, ""
를 넣었을 때
이런식으로 원치 않는 끊김을 마주할 수 있다.
그럴 때 위의 예시와 같이 \
를 사용하여 탈출시키면 끊기지 않고 정상적으로 문장을 마칠 수 있다.
Map
은 JavaScript
의 Object
와 굉장히 유사하다.
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
라는 type
은 any
와 같다.
Set
은 Dart
의 독특한 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()
매서드로 요소들을 추가하였음에도 불구하고 최초의 값이 변경되지 않았음을 알 수 있다.