3.0 기본 데이터 타입
아래 타입을 포함한 거의 대부분의 타입들이 객체로 이루어져 있다. (함수도 객체)
이것이 Dart가 진정한 객체 지향 언어로 불리는 이유이다.
void main() {
String name = "tom";
bool isPlay = true;
int age = 10;
double money = 52.55;
num x = 12;
num y = 1.2;
}
3.1 Lists
Dart에서 리스트(List)를 선언하는 두 가지 방법이 있습니다.
void main() {
// 1. 타입 추론을 사용한 리스트 선언
var case1 = [1, 2, 3, 4, 5];
// 2. 명시적으로 List 타입을 선언
List<int> case2 = [1, 2, 3, 4, 5];
}
유용한 기능
- 콤마(,)로 끝맺기
VSCode나 DartPad를 사용할 때 리스트 항목의 마지막에 쉼표(,) 를 추가하면 코드 포매팅에 유용합니다. 이는 특히 여러 줄로 나열된 리스트에서 더 깔끔하게 코드 정리할 수 있게 해줍니다.
만약 vscode나 dartPad를 사용한다면 맨 끝을 쉽표로 마무리하면 유용하다. void main(){ int case1 = [ 1, 2, 3, 4, 5, ]; }
- Collection if
Dart에서는 리스트 내에서if
문을 사용할 수 있습니다. 이를 통해 조건에 따라 리스트에 요소를 추가할지 결정할 수 있습니다. 예를 들어, 특정 조건이 참일 때만 요소를 추가할 수 있습니다. void main() { var giveMeSix = true; var case1 = [ 1, 2, 3, 4, 5, if (giveMeSix) 6, // giveMeSix가 true일 때만 6을 추가 ]; // 아래의 if문과 동일한 기능을 합니다. if (giveMeSix) { case1.add(6); } }
3. Collection for
Dart에서는 리스트 내에서 **`for`** 문을 사용할 수도 있습니다. 이를 통해 반복적으로 요소를 리스트에 추가할 수 있습니다.
```dart
void main() {
var numbers = [1, 2, 3];
var case1 = [
0,
for (var number in numbers) number, // numbers 리스트의 모든 요소를 추가
4,
];
print(case1); // 출력: [0, 1, 2, 3, 4]
}
추가 유용한 기능
- List 타입 명시: 리스트 타입을 명시적으로 선언하면 타입 안전성을 보장할 수 있습니다.
List<int> intList = [1, 2, 3];
- const List: 리스트 자체가 변경되지 않게 하려면 const 키워드를 사용할 수 있습니다.
const list = [1, 2, 3];
- 스프레드 연산자: 리스트를 다른 리스트에 포함시키는 방법도 있습니다.
void main() { var numbers = [1, 2, 3]; var moreNumbers = [0, ...numbers, 4]; print(moreNumbers); // 출력: [0, 1, 2, 3, 4] }
- null-aware 스프레드 연산자: 리스트가 null일 가능성이 있을 때, null 값인 경우를 처리할 수 있습니다.
void main() { List<int>? numbers; var moreNumbers = [0, ...?numbers, 4]; print(moreNumbers); // 출력: [0, 4] }
2.2 String Interpolation
String Interpolation은 문자열 내에서 변수를 사용하거나, 간단한 계산을 삽입하는 방법입니다. Dart에서는 $
기호를 사용해 변수를 문자열에 삽입할 수 있습니다.
변수 사용하기
문자열 안에 변수를 삽입하려면, 변수 앞에 $
기호를 붙이면 됩니다.
void main() {
var name = "tom";
var greeting = "hello $name"; // 출력: hello tom
}
계산 또는 표현식 사용하기
만약 변수뿐만 아니라 계산이나 표현식을 사용하고 싶다면, ${}
안에 표현식을 넣어줍니다.
void main() {
var age = 10;
var greeting = "I'm ${age + 5} years old"; // 출력: I'm 15 years old
}
${ }
형태를 사용하면 문자열 내에서 덧셈, 함수 호출, 논리 연산 등 다양한 표현식을 사용할 수 있습니다.- 단순한 변수는
$변수명
형태로 사용할 수 있지만, 복잡한 계산이나 표현식이 필요한 경우${ }
를 사용해야 합니다.
2.3 Collection for
Dart는 조건문(if) 및 반복(for)을 사용하여 컬렉션을 구축하는 데 사용할 수 있는 컬렉션 if 및 컬렉션 for도 제공합니다.
void main() {
var oldFriends = ["nico", "lynn"];
var newFriends = [
"tom",
"jon",
for (var friend in oldFriends) "❤️ $friend",
];
print(newFriends); // [tom, jon, ❤️ nico, ❤️ lynn]
}
2.4 Maps
Map은 key-value 쌍을 저장하는 객체입니다. 여기서 key는 고유해야 하지만, value는 중복될 수 있습니다. key와 value는 Dart의 모든 객체 타입이 될 수 있습니다.
1. Map 선언하는 방법
void main() {
var gifts = {
// Key: Value
'first': 'partridge',
'second': 'turtledoves',
'fifth': 'golden rings',
};
// Map 생성자를 사용하여 동일한 객체를 만들 수 있습니다.
var gifts2 = Map();
gifts2['first'] = 'partridge';
gifts2['second'] = 'turtledoves';
gifts2['fifth'] = 'golden rings';
}
- 첫 번째 방식은 리터럴 표기법을 사용해 Map을 선언하는 방식입니다.
- 두 번째 방식은 Map 생성자를 사용하여 키-값 쌍을 추가하는 방법입니다.
2. Map과 List를 함께 사용하는 방법
Dart에서는 Map과 List를 함께 사용할 수 있습니다. 특히 리스트 안에 Map을 넣는 구조를 활용하면 여러 객체를 손쉽게 관리할 수 있습니다. 예를 들어, 여러 영화 정보를 저장하는 리스트를 만들 수 있습니다.
void main() {
List<Map<String, Object>> movies = [
{
'title': '대도시의 사랑법',
'rate': 7.9,
'actor': '배우1',
},
{
'title': '다른 영화 제목',
'rate': 8.5,
'actor': '배우2',
},
];
// 영화 리스트를 출력
for (var movie in movies) {
print('Title: ${movie['title']}, Rate: ${movie['rate']}, Actor: ${movie['actor']}');
}
}
- List<Map<String, Object>>는 Map 객체들의 리스트를 나타냅니다. 각 Map은 영화 정보를 저장하는 구조로, 제목(
title
), 평점(rate
), 배우(actor
) 등의 정보를 포함합니다. - 이 리스트를 활용하면 여러 개의 영화 정보를 한 번에 다룰 수 있습니다.
- Object 타입은 모든 객체 타입을 허용하기 때문에 다양한 데이터를 포함할 수 있습니다.여러 명의 배우를 List 형식으로 저장도 가능!
void main() { List<Map<String, Object>> movies = [ { 'title': '대도시의 사랑법', 'rate': 7.9, 'actors': ['배우1', '배우2', '배우3'], // 여러 명의 배우를 List로 저장 }, { 'title': '다른 영화 제목', 'rate': 8.5, 'actors': ['배우4', '배우5'], // 여러 명의 배우를 List로 저장 }, ]; // 영화 리스트를 출력 for (var movie in movies) { print('Title: ${movie['title']}, Rate: ${movie['rate']}, Actors: ${movie['actors']}'); } }
- 번외~
2.5 Set
Set에 속한 모든 아이템들이 유니크해야될 때 사용한다.
유니크할 필요가 없다면 List를 사용하면 된다.
var halogens = {'fluorine', 'chlorine', 'bromine', 'iodine', 'astatine'};
'개발자 > SupaBase && Flutter' 카테고리의 다른 글
06. (Dart 개념_노마드코더 강의)설계도에 빗댄 Dart 개념 총정리 (2) | 2024.10.23 |
---|---|
05. (Dart 개념_노마드코더 강의)Classes (0) | 2024.10.23 |
04.(Dart 개념_노마드코더 강의) Functions (2) | 2024.10.23 |
02. (Dart 개념_노마드코더 강의) Variables (1) | 2024.10.23 |
01. (Dart 개념_노마드코더 강의) Flutter가 Dart를 선택한 이유 (0) | 2024.10.23 |