πŸ”Ά [μ˜€λ¦„μΊ ν”„_2일차] Dart 문법 기초 - 1

손세은·2023λ…„ 11μ›” 29일

Dart 문법 기초 - 1

variables

  • ν”„λ‘œκ·Έλž¨μ—μ„œ 값을 μ €μž₯ν•˜κ³  μ°Έμ‘°ν•  λ•Œ μ‚¬μš©ν•˜λŠ” κ°œλ…
  • λ³€μˆ˜λŠ” μ„ μ–Έκ³Ό μ΄ˆκΈ°ν™”κ°€ ν•„μš”ν•˜λ‹€.
  • λ³€μˆ˜λŠ” νƒ€μž…μ΄ ν•„μš”ν•˜λ‹€.
  • λ³€μˆ˜μ— Null-safetyλ₯Ό ν—ˆμš©ν•˜μ§€ μ•Šμ€ 경우, λ°˜λ“œμ‹œ κ·Έ λ³€μˆ˜λŠ” μ΄ˆκΈ°ν™” ν•΄μ•Όν•œλ‹€.
  • μ΄ˆκΈ°ν™” λ˜μ§€ μ•Šμ€ λ³€μˆ˜λŠ” μžλ™μœΌλ‘œ Null 값을 κ°€μ§€κ²Œ λœλ‹€.
  • λͺ…μ‹œμ  μ„ μ–Έ, μΆ”λ‘  2κ°€μ§€ λͺ¨λ‘ κ°€λŠ₯ν•˜λ‹€.
//λ³€μˆ˜ μ„ μ–Έκ³Ό μ΄ˆκΈ°ν™”
var name = 'John';
Object objName = 'John';
String strName = 'John';

final finalName = 'John';

const bar = 100000;
const double atm = 1.01325 * bar;
const baz = [1, 2, 3];

void main() {
  print(name);
  print(objName);
  print(strName);
  print(finalName);
  print(bar);
  print(atm);
  print(baz);
}
  • late : μ΄ˆκΈ°ν™”λ₯Ό λ‚˜μ€‘μ— ν•˜κ² λ‹€λŠ” ν‘œμ‹œ
class Person {
  late String name;

  void sayHello() {
    print('Hello, ${name}');
  }
}

void main() {
  Person person = Person();
  person.name = 'John';
  person.sayHello();
}
  • final
    • ν•œ 번 값을 ν• λ‹Ήν•˜λ©΄ 변경이 λΆˆκ°€λŠ₯ν•œ ν‚€μ›Œλ“œμ΄λ©°, μ΄ˆκΈ°ν™” ν›„ 값을 λ³€κ²½ν•  수 μ—†λ‹€.
    • λŸ°νƒ€μž„μ— 값이 ν• λ‹Ήλœλ‹€.
  • const
    • ν•œ 번 값을 ν• λ‹Ήν•˜λ©΄ 변경이 λΆˆκ°€λŠ₯ν•œ ν‚€μ›Œλ“œμ΄λ©°, 값을 λ³€κ²½ν•  수 μ—†λ‹€.

    • 컴파일 νƒ€μž„μ— 값이 ν• λ‹Ήλœλ‹€.

    • 관련링크:

      [Dart] 12. final vs. const

//final λ³€μˆ˜λŠ” λŸ°νƒ€μž„μ— 값이 ν• λ‹Ήλœλ‹€
//const λ³€μˆ˜λŠ” 컴파일 νƒ€μž„μ— 값이 ν• λ‹Ήλœλ‹€
import 'dart:math';

void main() {
  // final λ³€μˆ˜
  final int finalValue = Random().nextInt(100);
  print('finalValue: $finalValue');
  // const λ³€μˆ˜
  const int constValue = 5;
  print('constValue: $constValue');

  // final λ³€μˆ˜ μž¬ν• λ‹Ή (였λ₯˜)
  // finalValue = 10;

  // const λ³€μˆ˜ μž¬ν• λ‹Ή (였λ₯˜)
  // constValue = 10;

  // final λ³€μˆ˜ λ³€κ²½
  final int finalNewValue = finalValue + 10;
  print('finalNewValue: $finalNewValue');

  // const λ³€μˆ˜ λ³€κ²½ (였λ₯˜)
  // const int constNewValue = constValue + 10;
}

operator

Untitled

void main() {
  // μ‚°μˆ  μ—°μ‚°μž
  int a = 10;
  int b = 5;
  print("a + b = ${a + b}"); // λ”ν•˜κΈ°
  print("a - b = ${a - b}"); // λΉΌκΈ°
  print("a * b = ${a * b}"); // κ³±ν•˜κΈ°
  print("a / b = ${a / b}"); // λ‚˜λˆ„κΈ°
  print("a % b = ${a % b}"); // λ‚˜λ¨Έμ§€

  // 비ꡐ μ—°μ‚°μž
  print("a > b : ${a > b}");
  print("a < b : ${a < b}");
  print("a >= b : ${a >= b}");
  print("a <= b : ${a <= b}");
  print("a == b : ${a == b}");
  print("a != b : ${a != b}");

  // 논리 μ—°μ‚°μž
  bool x = true;
  bool y = false;
  print("x && y : ${x && y}");
  print("x || y : ${x || y}");
  print("!x : ${!x}");

  // ν• λ‹Ή μ—°μ‚°μž
  int c = 5;
  c += 3; // c = c + 3;
  print("c : $c");
  c -= 2; // c = c - 2;
  print("c : $c");
  c *= 4; // c = c * 4;
  print("c : $c");
  c ~/= 3; // c = c ~/ 3;
  print("c : $c");
  c %= 2; // c = c % 2;
  print("c : $c");

  // 증감 μ—°μ‚°μž
  int d = 7;
  d++; // d = d + 1;
  print("d : $d");
  d--; // d = d - 1;
  print("d : $d");
}

keyword

Untitled

DataType

void main() {
  // Numbers
  int a = 10;
  double b = 3.14;
  num c = 1; // num can be either int or double
  print("Numbers:");
  print("a: $a, b: $b, c: $c");

  // Strings
  String name = "John";
  String greeting = 'Hello, $name!';
  String multiLine = '''
    This is a multi-line string.
    It can cover multiple lines.
    ''';
  print("\nStrings:");
  print("name: $name");
  print("greeting: $greeting");
  print("multiLine: $multiLine");

  // Booleans
  bool isTrue = true;
  bool isFalse = false;
  print("\nBooleans:");
  print("isTrue: $isTrue");
  print("isFalse: $isFalse");

  // Lists
  List<int> numbers = [1, 2, 3];
  List<String> fruits = ["apple", "banana", "orange"];
  print("\nLists:");
  print("numbers: $numbers");
  print("fruits: $fruits");

  // Sets
  Set<int> numberSet = {1, 2, 3};
  Set<String> fruitSet = {"apple", "banana", "orange"};
  print("\nSets:");
  print("numberSet: $numberSet");
  print("fruitSet: $fruitSet");

  // Maps
  Map<String, int> ages = {"John": 30, "Jane": 25};
  Map<String, String> colors = {"apple": "red", "banana": "yellow", "orange": "orange"};
  print("\nMaps:");
  print("ages: $ages");
  print("colors: $colors");

  // Runes
  Runes input = new Runes('\u{1f600}');
  String smiley = String.fromCharCodes(input);
  print("\nRunes:");
  print("smiley: $smiley");

  // Symbols
  Symbol s = #test;
  print("\nSymbols:");
  print(s);
}

Functions

  • Dart의 ν•¨μˆ˜λŠ” 일급 객체이닀
  • ν•¨μˆ˜λ„ 연산이 κ°€λŠ₯ν•˜λ‹€.

Untitled

// 메인 ν•¨μˆ˜: ν”„λ‘œκ·Έλž¨μ˜ μ‹œμž‘μ μž…λ‹ˆλ‹€.
void main() {
  // 두 수λ₯Ό λ”ν•˜λŠ” ν•¨μˆ˜ 호좜
  int result = add(5, 3);
  //ν•¨μˆ˜μ˜ 결괏값을 λ³€μˆ˜μ— λŒ€μž…(μ—°μ‚°)이 κ°€λŠ₯ν•˜λ‹€. 
  print('5 + 3 = $result');
}

// 두 μ •μˆ˜λ₯Ό λ”ν•˜λŠ” ν•¨μˆ˜μž…λ‹ˆλ‹€.
int add(int a, int b) {
  return a + b;
}

Control Flow

void main() {
  int number = 42;

  // if-else 문을 μ‚¬μš©ν•˜μ—¬ μ§μˆ˜μΈμ§€ ν™€μˆ˜μΈμ§€ νŒλ³„ν•©λ‹ˆλ‹€.
  if (number % 2 == 0) {
    print('$number λŠ” μ§μˆ˜μž…λ‹ˆλ‹€.');
  } else {
    print('$number λŠ” ν™€μˆ˜μž…λ‹ˆλ‹€.');
  }

  // for λ°˜λ³΅λ¬Έμ„ μ‚¬μš©ν•˜μ—¬ 1λΆ€ν„° 5κΉŒμ§€μ˜ 합을 κ³„μ‚°ν•©λ‹ˆλ‹€.
  int sum = 0;
  for (int i = 1; i <= 5; i++) {
    sum += i;
  }
  print('1λΆ€ν„° 5κΉŒμ§€μ˜ ν•©: $sum');

  // while λ°˜λ³΅λ¬Έμ„ μ‚¬μš©ν•˜μ—¬ 1λΆ€ν„° 10κΉŒμ§€μ˜ 곱을 κ³„μ‚°ν•©λ‹ˆλ‹€.
  int product = 1;
  int i = 1;
  while (i <= 10) {
    product *= i;
    i++;
  }
  print('1λΆ€ν„° 10κΉŒμ§€μ˜ κ³±: $product');

  // switch 문을 μ‚¬μš©ν•˜μ—¬ 월별 일수λ₯Ό 좜λ ₯ν•©λ‹ˆλ‹€.
  int month = 2;
  int year = 2023;
  int days;

  switch (month) {
    case 1:
    case 3:
    case 5:
    case 7:
    case 8:
    case 10:
    case 12:
      days = 31;
      break;
    case 4:
    case 6:
    case 9:
    case 11:
      days = 30;
      break;
    case 2:
      if (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0)) {
        days = 29;
      } else {
        days = 28;
      }
      break;
    default:
      days = 0;
      print('μ˜¬λ°”λ₯Έ 월이 μ•„λ‹™λ‹ˆλ‹€.');
  }

  if (days != 0) {
    print('$year λ…„ $month 월은 $days μΌκΉŒμ§€ μžˆμŠ΅λ‹ˆλ‹€.');
  }
}
profile
νž™μŠ€ν„° κ°œλ°œμžκ°€ λ λž˜μš”

0개의 λŒ“κΈ€