Dart 기초

Hello World

void main() {
  for (int i = 0; i < 5; i++) {
    print('hello ${i + 1}');
  }
}

변수 선언

void main() {
  var name = 'soobin';
  print(name);

  name = 'judy';
  print(name);
}

변수 타입

void main() {
  dar
  // integer
  int num = 10;
  int num2 = 5;
  
  print(num + num2);
  print(num - num2);
  print(num / num2);
  print(num * num2);
  
  // double
  double num3 = 2.5;
  
  // boolean 
  bool isTrue = true;
  bool isFalse = false;
  
  // String
  String name = 'soobin';
  String name2 = 'judy';
  print(name + ' ' + name2);
  
  // var
  var name3 = 'yerin';
  var number = 23;
  
  print(name3.runtimeType);
  
  print('${name} ${name2}');
  print('$name $name2');
  
  dynamic email = 'judyb0626@gmail.com';
  dynamic number = 1;
  
  // var는 한 번 선언하면 다른 타입으로 변경 불가능
  // dynamic은 타입 변경 가능
}

null

void main() {
  
  String? name = 'soobin'; // null 가능
  String name2 = 'judy'; // null 불가능
  
  print(name!); // null 이 아니다
}

final, const

void main() {
  
  // final은 변경 불가능
  final String name = 'soobin';
  print(name);
  
  // const도 변경 불가능
  const String name2 = 'judy';
  
  // type 생략하면 var처럼 쓸 수 있음
  final name3 = 'soobin';
  const name4 = 'judy';
  
  // datetime
  DateTime now = DateTime.now();
  print(now);
  
  // final은 build time에 값을 알고있지 않아도 됨
  // const는 build time에 값을 알고있어야 함

  // build time에 코드를 컴퓨터가 이해할 수 있는 101010101으로 변경함
  final DateTime now2 = DateTime.now();
  // const DateTime now3 = DateTime.now(); error
  
}

operator

void main() {
  int num = 2;
  
  print(num + 2);
  print(num - 2);
  print(num * 2);
  print(num / 2);
  
  print('------------------');
  print(num % 2);
  print(num % 3);
  
  print('------------------');
  num++;
  print(num);
  num--;
  print(num);
  
  print('------------------');
  num += 5;
  print(num);
}

null 조건 operator

void main() {
  double? num = 4.0;
  num = null;
  num ??= 3.0; // num이 만약 null이면 오른쪽 값으로 바꿔라
}

비교 연산자

void main() {
  int num1 = 5;
  int num2 = 10;
  
  print(num1 > num2);
  print(num1 < num2);
  print(num1 >= num2);
  print(num1 >= num2);
  print(num1 == num2);
  print(num1 != num2);
}

타입 비교

void main() {
  int num1 = 5;
  int num2 = 10;
  
  print(num1 is int);
  print(num1 is String);
}

or, and

void main() {
  bool result = 1 > 10 && 1 > 0;
  print(result);
  
  bool result2 = 12 > 10 || 1 > 0;
  print(result2);
}

List

void main() {
  List<String> blackPink = ['제니', '지수', '로제', '리사'];
  List<int> numbers = [1, 2, 3, 4, 5, 6, 7];
  
  print(blackPink);
  print(numbers);
  
  // index
  print(blackPink[0]);
}

List function

void main() {
  List<String> blackPink = ['제니', '지수', '로제', '리사'];
  
  print(blackPink.length);
  blackPink.add('수빈');
  
  print(blackPink);
  blackPink.remove('수빈');
  
  print(blackPink);
  print(blackPink.indexOf('로제'));
}

Map

void main() {
  Map<String, String> dic = {
    'Harry' : '해리',
    'Ron' : '론',
    'Hermione' : '헤르미온느',
  };
  
  print(dic);
  
   Map<String, bool> isHarryPotter = {
    'Harry' : true,
    'Ironman' : false,
    'Hermione' : true,
  };
  
  print(isHarryPotter);
  
  isHarryPotter.addAll({
    'Spiderman' : false,
  });
  
  print(isHarryPotter);
  print(isHarryPotter['Ironeman']);
  
  isHarryPotter['Hulk'] = false;
  print(isHarryPotter); 
  
  isHarryPotter.remove('Ironman');
  
  print(isHarryPotter.keys);
  print(isHarryPotter.values);
}

Set

void main() {
  // Set, 중복 불가
  final Set<String> names = {
    'Soobin',
    'Judy',
    'Yerin',
  };
  
  print(names);
  
  names.add('Hanni');
  
  print(names);
  
  names.remove('Soobin');
  
  print(names);
  
  print(names.contains('Hanni'));
}

if

void main() {
  // if 
  int num = 2;
  
  if(num %  == 0) {
    print('짝수');
  } else {
    print('홀수');
  }
}
void main() {
  // if 
  int num = 2;
  
  if(num % 3 == 0) {
    print('나머지 : 0');
  } else if(num % 3 == 1){
    print('나머지 : 1');
  } else {
    print('나머지 : 2');
  }
}

switch

void main() {
  // switch
  int num = 3;
  
  switch(num % 3) {
    case 0:
      print('나머지 : 0');
      break;
    case 1:
      print('나머지 : 1');
      break;
    default:
      print('나머지 : 2');
      break;
  }
}

for loop

void main() {
  // for loop
  
  for (int i = 0; i < 10; i++) {
    print(i);
  }
  
  print('------------------------');
  
  int total = 0;
  List<int> numbers = [1, 2, 3, 4, 5, 6, 7];
  
  for (int i = 0; i < numbers.length; i++) {
    total += numbers[i];
  }
  print(total);
}
void main() {
  int total = 0;
  List<int> numbers = [1, 2, 3, 4, 5, 6, 7];
  
  for (int num in numbers) {
    print(num);
  }
}

while loop

void main() {
  // while loop
  
  int total = 0; 
  
  while(total < 10) {
    total += 1;
  }
  
  print(total);
  
  total = 0;
  
  do {
    total += 1;
  } while (total < 10);
  
  print(total);
}

break

void main() {
  // while loop

  int total = 0;

  while (total < 10) {
    total += 1;

    if (total == 5) break;
  }

  print(total);
}

continue

void main() {
  // while loop
  for (int i = 0; i < 10; i++) {
    if (i == 5) continue;
    print(i);
  }
}

enum

enum Status {
  approve, 
  pending, 
  rejected,
}

void main() {
  Status status = Status.pending;
  
  if (status == Status.approve) {
    print('승인입니다.');
  } else if (status == Status.pending) {
    print('대기입니다.');
  } else {
    print('거절입니다.');
  }
}

function

void main() {
  addNumbers(10, 20, 30);
}

// 세 개의 숫자 (x, y, z)를 더하고 짝수인지 홀수인지 알려주는 함수
// parameter / argument - 매개변수
// positional parameter - 순서가 중요한 파라미터

addNumbers(int x, int y, int z) {
  int sum = x + y + z;
  
  print(sum);
}

optional parameter

void main() {
  addNumbers(100);
}

// 세 개의 숫자 (x, y, z)를 더하고 짝수인지 홀수인지 알려주는 함수
// parameter / argument - 매개변수
// positional parameter - 순서가 중요한 파라미터
// optional parameter - 있어도 되고 없어도 되는 파라미터

addNumbers(int x, [int y = 20, int z = 30, int? r]) {
  int sum = x + y + z;
  
  print(sum);
}

named parameter

void main() {
  addNumbers(x: 10,y: 20,z: 30);
}

// 세 개의 숫자 (x, y, z)를 더하고 짝수인지 홀수인지 알려주는 함수
// parameter / argument - 매개변수
// positional parameter - 순서가 중요한 파라미터
// optional parameter - 있어도 되고 없어도 되는 파라미터
// named parameter - 이름이 있는 파라미터 (순서는 안중요)

addNumbers({
  required int x,
  required int y,
  required int z,
}) {
  int sum = x + y + z;
  
  print(sum);
}
void main() {
  addNumbers(x: 10,y: 20);
}

// 세 개의 숫자 (x, y, z)를 더하고 짝수인지 홀수인지 알려주는 함수
// parameter / argument - 매개변수
// positional parameter - 순서가 중요한 파라미터
// optional parameter - 있어도 되고 없어도 되는 파라미터
// named parameter - 이름이 있는 파라미터 (순서는 안중요)

addNumbers({
  required int x,
  required int y,
  int z = 30,
}) {
  int sum = x + y + z;
  
  print(sum);
}

반환값 설정

void main() {
  int result = addNumbers(x: 10,y: 20);
  
  print('sum : $result');
}

int addNumbers({
  required int x,
  required int y,
  int z = 30,
}) {
  int sum = x + y + z;
  
  return sum;
}

named, positional 동시에 사용

void main() {
  int result = addNumbers(10, y: 20, z: 50);
  
  print('sum : $result');
}

int addNumbers(int x, {
  required int y,
  int z = 30,
}) {
  int sum = x + y + z;
  
  return sum;
}

arrow function

void main() {
  int result = addNumbers(10, y: 20, z: 50);
  
  print('sum : $result');
}

// arrow function - 화살표 함수
int addNumbers(int x, {
  required int y,
  int z = 30,
}) => x + y + z;

typedef

void main() {
  Operation operation = add;
  
  int result = operation(10, 20, 30);
  
  print(result);
  
  operation = subtract;
  
  int result2 = operation(10, 20, 30);
  
  print(result2);
}

// signature
typedef Operation = int Function(int x, int y, int z);

// 더하기 
int add(int x, int y, int z) => x + y + z;

// 빼기
int subtract(int x, int y, int z) => x - y - z;
void main() {
  int result = calculate(30, 40, 50, add);
  print(result);
}

// signature
typedef Operation = int Function(int x, int y, int z);

// 더하기 
int add(int x, int y, int z) => x + y + z;

// 빼기
int subtract(int x, int y, int z) => x - y - z;

// 계산
int calculate(int x, int y, int z, Operation operation) {
  return operation(x, y, z);
}
void main() {
  int result = calculate(30, 40, 50, add);
  print(result);
  
  int result2 = calculate(30, 40, 50, subtract);
  print(result2);
}

// signature
typedef Operation = int Function(int x, int y, int z);

// 더하기 
int add(int x, int y, int z) => x + y + z;

// 빼기
int subtract(int x, int y, int z) => x - y - z;

// 계산
int calculate(int x, int y, int z, Operation operation) {
  return operation(x, y, z);
}

Last updated