Dart 기본기 정리

김희산·2023년 7월 14일
0

TIL

목록 보기
22/23

서론

Flutter를 시작하기로 마음 먹고 '코드 팩토리'님의 인프런 'Flutter 3.0 앱 개발' 강의를 결제해 보았습니다.
Flutter는 구글에서 만든 Dart 프로그래밍 언어로 작성되며, 안드로이드와 iOS 애플리케이션을 동시에 개발할 수 있는 장점이 있다고 하네요.
강의 초반에는 Dart의 기초 문법과 프로그래밍 기법에 대한 강의가 있습니다.

프로그래밍 언어에 대해서 완전히 모르는 건 아니지만 Dart와 친해지기 위해, 그리고 개념을 다시 한번 복습하기 위해 기초 강의를 수강하였고 다음과 같이 정리해 보았습니다. 자바스크립트와 많이 비슷한 것 같고 타입 스크립트처럼 Dart에는 변수와 함수에 타입을 명시할 수 있습니다. 그리고 타입 추론 기능도 있어서 코드 가독성 측면에서도 훌륭한 것 같습니다.

Flutter를 시작하시는 분들께 도움이 되었으면 좋겠네요!!

// Dart 언어에서 사용되는 열거형입니다.
enum Status {
  approved, // 승인됨
  pending, // 보류 중
  rejected, // 거절됨
}

void main() {
  // 사용자 정의 함수인 addNumbers에 값을 넣어 결과값을 얻습니다.
  int result = addNumbers(y: 20, x: 10);
  int result2 = addNumbers(x: 10, y: 30, z: 40);

  // 논리형 변수입니다.
  bool isTrue = true;
  bool isFalse = false;

  // 문자열 변수입니다.
  String name = '레드벨벳';
  String name2 = '코드팩토리';

  // var 키워드를 사용하면, Dart가 알아서 변수의 타입을 결정합니다.
  var name3 = '블랙핑크';
  var number = 20;

  // 두 변수 모두 문자열을 저장하지만, 다른 값을 갖습니다.
  String name4 = '레드벨벳';
  String name5 = '슬기';

  // dynamic은 모든 타입의 변수를 저장할 수 있습니다.
  dynamic name6 = '코드팩토리';
  dynamic number2 = 1;

  // name2는 이전에 이미 선언되어있으므로, 새로운 값을 가진 name2를 다시 선언할 수 없습니다.
  // var name2 = '블랙핑크';  // 이 줄은 오류를 일으킵니다.

  // null safety 기능을 사용하면, name2가 null 값을 가질 수 있음을 나타냅니다.
  String? name7 = '블랙핑크';

  // final은 한 번 초기화하면 값이 변경되지 않는 변수를 선언합니다.
  final name8 = '코드팩토리';
  
  // const는 컴파일 시점에 값이 결정되는 상수를 선언합니다.
  const String name9 = '블랙핑크';

  // DateTime 클래스를 사용하여 현재 시간을 가져옵니다.
  final DateTime now = DateTime.now();

  // 정수형 변수입니다.
  int number1 = 1;

  // 논리 연산자를 사용한 예시입니다.
  bool result3 = 12 > 10 && 1 > 0;
  bool result4 = 12 > 10 && 0 > 1;
  bool result5 = 12 > 10 || 1 > 0;
  bool result6 = 12 > 10 || 0 > 1;
  bool result7 = 12 < 10 || 1 > 0;
  bool result8 = 12 < 10 || 0 > 1;

  // 문자열과 정수를 저장하는 리스트입니다.
  List<String> blackPink = ['제니', "지수", "로제", "리사"];
  List<int> blackPink1 = [1, 2, 3, 4, 5, 6];

  // 리스트에 항목을 추가하거나 제거합니다.
  blackPink.add('코드팩토리');
  blackPink.remove('코드팩토리');

  // 문자열을 키로 하고, 다른 문자열을 값으로 가지는 사전입니다.
  Map<String, String> dictionary = {
    'Harry Potter': '해리포터',
    'Ron Weasly': "론 위즐리",
    "Hermione Granger": "헤르미온느 그레인저"
  };

  // 문자열을 키로 하고, 불리언을 값으로 가지는 사전입니다.
  Map<String, bool> isHarryPotter = {
    "Harry Potter": true,
    "Ron weasley": true,
    "Ironman": false
  };

  // 사전에서 키를 이용해 항목을 제거합니다.
  isHarryPotter.remove("Harry Potter");

  // 집합입니다. 집합은 중복된 값을 가질 수 없습니다.
  final Set<String> names = {
    "Code Facory",
    "Flutter",
    "Black Pink",
  };

  // 집합에 항목을 추가하거나 제거합니다.
  names.add('Jenny');
  names.remove('Jenny');

  // 정수형 변수입니다.
  int number3 = 3;

  // 정수형 변수를 0으로 초기화합니다.
  int total = 0;
  List<int> numbers = [1,2,3,4,5,6];

  // for 루프를 이용해 리스트에 있는 모든 숫자를 합합니다.
  for(int i = 0; i < numbers.length; i++){
    total += numbers[i];
  }

  // total을 다시 0으로 초기화합니다.
  total = 0;

  // for-in 루프를 이용해 리스트에 있는 모든 숫자를 합합니다.
  for(int number in numbers){
    total += number;
  }

  // while 루프를 이용해 total이 10이 될 때까지 숫자를 계속 더합니다.
  while(total < 10){
    total += 1;
    if(total == 5) break; // total이 5가 되면 루프를 종료합니다.
  }

  // enum을 사용한 예시입니다.
  Status status = Status.approved;

  // 함수형 프로그래밍을 사용한 예시입니다.
  // 함수를 변수에 할당하고, 해당 변수를 이용해 함수를 호출합니다.
  Operation operation = add;
  int result9 = operation(10, 20, 30);

  operation = subtract;
  int result10 = operation(10, 20, 30);

  // 함수를 다른 함수의 인자로 전달하는 고차 함수(higher-order function)의 예시입니다.
  int result11 = calculate(30, 40, 50, add);
  int result12 = calculate(40,50,60,subtract);
}

// typedef를 이용해 함수 타입을 선언합니다.
typedef Operation = int Function(int x, int y, int z);

// 3개의 정수를 받아 합산하는 함수입니다.
int add(int x, int y, int z){
  return x+y+z;
}

// 3개의 정수를 받아 차를 구하는 함수입니다.
int subtract(int x, int y, int z){
  return x-y-z;
}

// 두 개의 숫자를 더하는 함수입니다.
int addNumbers({required int x, required int y, int z = 0}) {
  return x + y + z;
}

// 고차 함수(higher-order function)입니다.
// 연산을 수행할 함수와 인자를 받아 결과를 반환합니다.
int calculate(int a, int b, int c, Operation operation){
  return operation(a,b,c);
}

출처 : [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출! ( 코드팩토리 )

profile
성공은 제로섬 게임이 아니라 주변인들과 함께 나아가는 것이다.

0개의 댓글