void main() {
String name = "jason";
bool alive = true;
int age = 20;
double pi = 3.14;
num x = 10;
x = 1.23;
}
String
: 문자bool
: true / falseint
: 정수double
: 소수number
: 정수와 소수 모두 가능다양한 숫자값을 받아야 할 때에는 number
타입을 이용하는 것이 편리하다.
Dart의 List
는 javascript의 Array
와 같다고 보면 된다.
Dart에서 리스트를 만드는 방법은 간단하다.
void main() {
var numbers = [1,2,3,4];
List<int> numbers = [1,2,3,4];
}
첫번째 줄처럼 var
를 이용해서 선언할 수도 있고
두번째 줄처럼 리스트와 데이터타입을 명시해서 사용할 수도 있다.
dart에서는 collection if 라는 기능을 이용해서 있을 수도, 없을 수도 있는 값을 리스트에 넣을 수 있다.
void main() {
var giveMeFive = true;
var numbers = [1,2,3,4,if(giveMeFive) 5];
}
위 코드는 giveMeFive라는 데이터가 true이면 numbers 리스트에 5를 추가한다는 의미이다.
void main() {
var giveMeFive = true;
var numbers = [1,2,3,4];
if (giveMeFive === true) {
numbers.add(5);
}
}
같은 코드이지만 collection if 를 사용한 위 코드가 더 간단한 것을 볼 수 있다.
다음은 ‘$데이터명
' 을 이용해서 문자열 변수 두개를 연결시키는 방법이다.
void main() {
var name = 'hey';
var greeting = '안녕 내 이름은 $name';
print(greeting);
// 안녕 내 이름은 hey
}
이와 같이 문자열 안에서 $
뒤에 다른 데이터명을 붙이면 해당 데이터를 끌어와서 사용할 수 있다.
데이터를 단순하게 끌어올 때는 위와 같이 하면 되지만
간단한 계산을 해서 가져오고 싶을 때에는 ${데이터~}
를 사용해야한다.
void main() {
var name = 'hey';
var age = 20;
var greeting = '안녕 내 이름은 $name야 나이는 ${age+2}살임';
print(greeting);
// 안녕 내 이름은 hey야 나이는 22살임
}
$age
가 아닌 ${age+2}
라고 써주었기 때문에 나이로 입력한 20 대신 22로 출력이 된다.
collection for 기능은 다른 리스트에서 요소들을 간단한 이벤트를 더해서 끌어올 때 사용한다.
예를 들어, 다음과 같이 newFriends 리스트와 oldFriends 리스트가 있다고 하자.
newFriends에 oldFriends 요소들을 가지고와 함께 출력하려고 하는데,
이 때 oldFriends 요소들 앞에는 특별한 표식을 붙여 출력하고자 한다.
void main() {
var oldFriends = ['Apple', 'Banana'];
var newFriends = [
'Cat',
'Donkey',
'Error',
for(var friend in oldFriends) "✨$friend",
];
print(newFriends);
// [Cat, Donkey, Error, ✨Apple, ✨Banana]
}
for(var friend in oldFriends) "✨$friend"
코드는 olfFriends 에 있는 요소들 앞에 ✨ 를 붙여 하나씩 리스트에 더해주겠다는 의미이다.
Dart의 Map
은 javascript의 Object
와 같다고 보면 된다.
void main() {
var player = {
'name': 'Son',
'xp': 19.99,
'superpower': true,
};
}
마찬가지로 var
를 이용해서 선언해줄 수 있다.
player 에 마우스를 올려보면 데이터 타입이 Map<String, Object>
라고 나오는데
String
은 key
의 값이 모두 문자열이라는 의미이고,
Object
는 value
의 값이 다양한 데이터 타입이라는 의미이다.
물론 데이터 타입을 명시해서 map을 선언해 줄수도 있다.
void main() {
Map<int, bool> player = {
1: true,
2: false,
3: false,
};
}
이처럼 Map<int, bool>
라고 쓰면
이 Map의 key
값은 정수여야 하고, value
값은 true
또는 false
가 되어야 한다는 뜻이다.
더 심화해서 보자면 다음과 같이 List 안에 Map, 또는 Map 안에 List 의 데이터타입을 명시하여 선언할 수 있다.
void main() {
// key값은 숫자로 이루어진 List이고 value값은 불리언인 Map...
Map<List<int>, bool> player = {
[1,2,3]: true,
[4,6,8]: false,
};
// key값이 문자열이고 value값의 데이터 타입이 다양한 Map들의 List...
List<Map<String, Object>> players = [
{'name': 'A', 'xp': 19.98765},
{'name': 'B', 'xp': 18.98765},
];
}
추천하는 방법도 아니고 데이터 타입 명시 안해도 Dart 에서는 알아서 잘 찾아내기 때문에
꼭 필요한 경우가 아니라면 사용할 일은 많이 없을 것 같다.
Set은 Map과 비슷하지만 몇가지 차이점이 있다.
[]
)가 아닌 중괄호({}
)로 묶는다.void main() {
var numbers = {1,2,3,4};
numbers.add(1);
numbers.add(1);
numbers.add(1);
numbers.add(1);
print(numbers);
// {1, 2, 3, 4}
}
역시나 var를 이용해서 선언할 수 있다.
set
는 모든 값이 달라야 하기 때문에 위처럼 아무리 1을 add
한다고 해도 1은 한번만 출력된다.
또한 데이터 타입을 명시해서 선언할 수도 있다.
void main() {
Set<int> numbers = {1,2,3,4};
}
<참조>