Created at : 2025-01-07 19:29
Auther: Soo.Y


๐Ÿ“๋ฉ”๋ชจ

1. Data Types

Dart์—์„œ ๊ธฐ๋ณธ ๋ฐ์ดํ„ฐ ํƒ€์ž…์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • int: ์ •์ˆ˜ (์˜ˆ: 1, 42)
  • double: ๋ถ€๋™ ์†Œ์ˆ˜์  ์ˆซ์ž (์˜ˆ: 3.14, -0.5)
  • num: int์™€ double์„ ๋ชจ๋‘ ํฌํ•จํ•˜๋Š” ํƒ€์ž….
  • String: ๋ฌธ์ž์—ด (์˜ˆ: 'hello', "Dart")
  • bool: ์ฐธ/๊ฑฐ์ง“ ๋…ผ๋ฆฌ๊ฐ’ (์˜ˆ: true, false)

์‹ค์Šต ๋ฌธ์ œ 1: ๋ณ€์ˆ˜ a, b, c, d, e๋ฅผ ๊ฐ๊ฐ int, double, num, String, bool ํƒ€์ž…์œผ๋กœ ์„ ์–ธํ•˜๊ณ  ๊ฐ’์„ ์ดˆ๊ธฐํ™”ํ•˜์„ธ์š”.

int a = 10;
double b = 3.14;
num c = 5.5; // num์€ int์™€ double ๋ชจ๋‘๋ฅผ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค.
String d = 'Hello, Dart!';
bool e = true;

์‹ค์Šต ๋ฌธ์ œ 2: ๊ฐ ๋ณ€์ˆ˜์˜ ํƒ€์ž…์„ ์ถœ๋ ฅํ•˜์„ธ์š” (runtimeType ์‚ฌ์šฉ)

void main() {
  int a = 10;
  double b = 3.14;
  num c = 5.5;
  String d = 'Hello, Dart!';
  bool e = true;
 
  print('a์˜ ํƒ€์ž…: ${a.runtimeType}');
  print('b์˜ ํƒ€์ž…: ${b.runtimeType}');
  print('c์˜ ํƒ€์ž…: ${c.runtimeType}');
  print('d์˜ ํƒ€์ž…: ${d.runtimeType}');
  print('e์˜ ํƒ€์ž…: ${e.runtimeType}');
}

2. Lists

Dart์˜ ๋ฆฌ์ŠคํŠธ๋Š” Python์˜ ๋ฆฌ์ŠคํŠธ์™€ ์œ ์‚ฌํ•˜๋ฉฐ, ์—ฌ๋Ÿฌ ๊ฐ’์„ ํ•˜๋‚˜์˜ ๋ฐฐ์—ด์— ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.

  • ๊ณ ์ • ๊ธธ์ด: ๊ธธ์ด๋ฅผ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†์Œ.
  • ๊ฐ€๋ณ€ ๊ธธ์ด: ์ถ”๊ฐ€ ๋ฐ ์‚ญ์ œ ๊ฐ€๋Šฅ.

์‹ค์Šต ๋ฌธ์ œ 1: ๊ธธ์ด๊ฐ€ ๊ณ ์ •๋œ List<int>๋ฅผ ๋งŒ๋“ค๊ณ  ์ˆซ์ž 1~5๋ฅผ ์ €์žฅํ•˜์„ธ์š”.

void main() {
  List<int> fixedList = List<int>.filled(5, 0); // ๊ธธ์ด๊ฐ€ 5์ธ ๊ณ ์ • ๋ฆฌ์ŠคํŠธ ์ƒ์„ฑ
  fixedList[0] = 1;
  fixedList[1] = 2;
  fixedList[2] = 3;
  fixedList[3] = 4;
  fixedList[4] = 5;
 
  print(fixedList);
}

์‹ค์Šต ๋ฌธ์ œ 2: ๊ฐ€๋ณ€ ๊ธธ์ด ๋ฆฌ์ŠคํŠธ๋ฅผ ๋งŒ๋“ค๊ณ , ๋ฌธ์ž์—ด ๊ฐ’ 3๊ฐœ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ณ  ์ถœ๋ ฅํ•˜์„ธ์š”.

void main() {
  List<String> growableList = []; // ๊ฐ€๋ณ€ ๊ธธ์ด ๋ฆฌ์ŠคํŠธ ์ƒ์„ฑ
  growableList.add('Apple');
  growableList.add('Banana');
  growableList.add('Cherry');
 
  print(growableList);
}

์‹ค์Šต ๋ฌธ์ œ 3: ๋ฆฌ์ŠคํŠธ์˜ ์š”์†Œ๋ฅผ ๋ฐ˜๋ณต๋ฌธ์œผ๋กœ ์ˆœํšŒํ•˜์—ฌ ์ถœ๋ ฅํ•˜์„ธ์š”.

void main() {
  List<String> fruits = ['Apple', 'Banana', 'Cherry'];
 
  for (String fruit in fruits) {
    print(fruit);
  }
}

3. String Interpolation

๋ฌธ์ž์—ด ์•ˆ์—์„œ ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์„ ๋ฌธ์ž์—ด ๋ณด๊ฐ„๋ฒ•์ด๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

  • $๋ณ€์ˆ˜๋ช… ๋˜๋Š” ${ํ‘œํ˜„์‹} ํ˜•์‹์œผ๋กœ ์‚ฌ์šฉ.

์‹ค์Šต ๋ฌธ์ œ 1: ์ด๋ฆ„๊ณผ ๋‚˜์ด๋ฅผ ์ €์žฅํ•˜๋Š” ๋ณ€์ˆ˜ name, age๋ฅผ ์„ ์–ธํ•˜๊ณ , "My name is [name] and I am [age] years old"๋ฅผ ์ถœ๋ ฅํ•˜์„ธ์š”.

void main() {
  String name = 'Alice';
  int age = 25;
 
  print('My name is $name and I am $age years old');
}

4. Collection(์ปฌ๋ ‰์…˜) for

Dart์˜ for ํ‚ค์›Œ๋“œ๋Š” ์ปฌ๋ ‰์…˜(๋ฆฌ์ŠคํŠธ, ์„ธํŠธ ๋“ฑ)์„ ์ˆœํšŒํ•˜๋ฉฐ ์š”์†Œ๋ฅผ ์ƒ์„ฑํ•  ๋•Œ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค.

์‹ค์Šต ๋ฌธ์ œ 1: ์ˆซ์ž 1~5๊ฐ€ ํฌํ•จ๋œ ๋ฆฌ์ŠคํŠธ๋ฅผ ์ƒ์„ฑํ•˜๊ณ , ๊ฐ ์ˆซ์ž์˜ ์ œ๊ณฑ ๊ฐ’์„ ์ƒˆ๋กœ์šด ๋ฆฌ์ŠคํŠธ๋กœ ๋งŒ๋“œ์„ธ์š”.

void main() {
  List<int> numbers = [1, 2, 3, 4, 5];
  List<int> squaredNumbers = [for (int number in numbers) number * number];
 
  print(squaredNumbers); // ์ถœ๋ ฅ: [1, 4, 9, 16, 25]
}

์‹ค์Šต ๋ฌธ์ œ 2: ๋ฌธ์ž์—ด ๋ฆฌ์ŠคํŠธ์—์„œ ๊ธธ์ด๊ฐ€ 4 ์ด์ƒ์ธ ์š”์†Œ๋งŒ ํฌํ•จ๋œ ๋ฆฌ์ŠคํŠธ๋ฅผ ๋งŒ๋“œ์„ธ์š”.

void main() {
  List<String> words = ['dart', 'flutter', 'ui', 'ux'];
  List<String> longWords = [for (String word in words) if (word.length >= 4) word];
 
  print(longWords); // ์ถœ๋ ฅ: ['dart', 'flutter']
}

5. Maps

๋งต์€ ํ‚ค์™€ ๊ฐ’์˜ ์Œ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.

  • Dart์—์„œ ๋งต์€ Map<KeyType, ValueType>์œผ๋กœ ์„ ์–ธ.

์‹ค์Šต ๋ฌธ์ œ 1: ๊ตญ๊ฐ€์™€ ์ˆ˜๋„๋ฅผ ํ‚ค-๊ฐ’์œผ๋กœ ์ €์žฅํ•œ ๋งต์„ ์ƒ์„ฑํ•˜์„ธ์š”.

  • South Korea, Seoul
  • Japan, Tokyo
  • France, Paris
void main() {
  Map<String, String> countryCapital = {
    'South Korea': 'Seoul',
    'Japan': 'Tokyo',
    'France': 'Paris'
  };
 
  print(countryCapital);
}

์‹ค์Šต ๋ฌธ์ œ 2: ๋งต์—์„œ ํŠน์ • ๊ตญ๊ฐ€์˜ ์ˆ˜๋„๋ฅผ ๊ฒ€์ƒ‰ํ•˜๊ณ  ์ถœ๋ ฅํ•˜์„ธ์š”.

void main() {
  Map<String, String> countryCapital = {
    'South Korea': 'Seoul',
    'Japan': 'Tokyo',
    'France': 'Paris'
  };
 
  String capitalOfJapan = countryCapital['Japan'] ?? 'Unknown';
  print('The capital of Japan is $capitalOfJapan');
}

์‹ค์Šต ๋ฌธ์ œ 3: ๋ชจ๋“  ํ‚ค์™€ ๊ฐ’์„ ์ˆœํšŒํ•˜๋ฉฐ ์ถœ๋ ฅํ•˜์„ธ์š”.

  • Map์˜ forEach ์‚ฌ์šฉ
void main() {
  Map<String, String> countryCapital = {
    'South Korea': 'Seoul',
    'Japan': 'Tokyo',
    'France': 'Paris'
  };
 
  countryCapital.forEach((country, capital) {
    print('The capital of $country is $capital');
  });
}

6. Sets

Dart์˜ ์„ธํŠธ๋Š” ์ค‘๋ณต๋˜์ง€ ์•Š๋Š” ๊ณ ์œ ํ•œ ๊ฐ’๋“ค์˜ ์ง‘ํ•ฉ์ž…๋‹ˆ๋‹ค.

์‹ค์Šต ๋ฌธ์ œ 1: ์ˆซ์ž 1, 2, 3, 3, 4, 5๋ฅผ ํฌํ•จํ•œ ์„ธํŠธ๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ์ถœ๋ ฅํ•˜์„ธ์š” (์ค‘๋ณต์ด ์ œ๊ฑฐ๋˜๋Š”์ง€ ํ™•์ธ).

void main() {
  // ์ค‘๋ณต๋œ ๊ฐ’์ด ํฌํ•จ๋œ ๋ฆฌ์ŠคํŠธ
  List<int> numbers = [1, 2, 3, 3, 4, 5];
  
  // ๋ฆฌ์ŠคํŠธ๋ฅผ ์„ธํŠธ๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ ์ค‘๋ณต ์ œ๊ฑฐ
  Set<int> numberSet = Set<int>.from(numbers);
  
  // ์„ธํŠธ ์ถœ๋ ฅ
  print(numberSet); // ์ถœ๋ ฅ: {1, 2, 3, 4, 5}
}

์‹ค์Šต ๋ฌธ์ œ 2: ๋‘ ์„ธํŠธ๋ฅผ ๋งŒ๋“ค์–ด ํ•ฉ์ง‘ํ•ฉ, ๊ต์ง‘ํ•ฉ, ์ฐจ์ง‘ํ•ฉ์„ ๊ตฌํ•˜์„ธ์š”.

  • union : ํ•ฉ์ง‘ํ•ฉ ๋ฉ”์„œ๋“œ
  • intersection : ๊ต์ง‘ํ•ฉ ๋ฉ”์„œ๋“œ
  • difference : ์ฐจ์ง‘ํ•ฉ ๋ฉ”์„œ๋“œ
void main() {
  // ์ฒซ ๋ฒˆ์งธ ์„ธํŠธ
  Set<int> setA = {1, 2, 3, 4, 5};
  
  // ๋‘ ๋ฒˆ์งธ ์„ธํŠธ
  Set<int> setB = {4, 5, 6, 7, 8};
  
  // ํ•ฉ์ง‘ํ•ฉ: ๋‘ ์„ธํŠธ์˜ ๋ชจ๋“  ์š”์†Œ๋ฅผ ํฌํ•จ (์ค‘๋ณต ์ œ๊ฑฐ)
  Set<int> unionSet = setA.union(setB);
  print('ํ•ฉ์ง‘ํ•ฉ: $unionSet'); // ์ถœ๋ ฅ: {1, 2, 3, 4, 5, 6, 7, 8}
  
  // ๊ต์ง‘ํ•ฉ: ๋‘ ์„ธํŠธ์— ๋ชจ๋‘ ์กด์žฌํ•˜๋Š” ์š”์†Œ
  Set<int> intersectionSet = setA.intersection(setB);
  print('๊ต์ง‘ํ•ฉ: $intersectionSet'); // ์ถœ๋ ฅ: {4, 5}
  
  // ์ฐจ์ง‘ํ•ฉ: setA์—๋Š” ์žˆ๊ณ  setB์—๋Š” ์—†๋Š” ์š”์†Œ
  Set<int> differenceSet = setA.difference(setB);
  print('์ฐจ์ง‘ํ•ฉ: $differenceSet'); // ์ถœ๋ ฅ: {1, 2, 3}
}

๐Ÿ“œ์ถœ์ฒ˜(์ฐธ๊ณ  ๋ฌธํ—Œ)


๐Ÿ”—์—ฐ๊ฒฐ ๋ฌธ์„œ

3์ผ์ฐจ 4์ผ์ฐจ Code review