본문 바로가기

CS/Flutter | Dart

Dart 기본 - if, for, while, function, parameter, typedef

if

void main() {
  // if
  int num1 = 10;
  if (num1 % 3 == 0){
    print("나머지가 0 입니다.");
  }else if(num1 % 3 == 1){
    print("나머지가 1 입니다.");
  }else{
    print("나머지가 2 입니다,");
  }
}

 

 

switch

void main() {
  // switch
  int num1 = 10;
  switch (num1 % 3){
    case 0:
      print("나머지가 0 입니다.");
      break;
    case 1:
      print("나머지가 1 입니다.");
      break;
    default:
      print("나머지가 2 입니다.");
      break;
  }
}

 

 

for loop

void main() {
//   int total = 0;
  List<int> nums = [1, 2, 3, 4, 5];
//   for (int i = 0; i < nums.length; i++){
//    total += nums[i];
//   }
//   print(total);
  
  int total = 0;
  for (int number in nums){
    total += number;
  }
  print(total);
}

for (int i=0; i<nums.length; i++)의 기본적인 방법과 for (int number in nums)의 보다 간단한 방법

 

 

while loop

void main() {
  int total = 0;
  while (total < 10){
    total += 1;
    if (total == 5){
    break;
    }
  }
  print(total);
}

break는 loop를 통째로 종료하지만 continue는 현재 실행하고 있는 loop만 취소하고 다음 i값(위 예시에는 없음)으로 넘어감

 

 

enum

enum Status{
  approved, //승인
  pending, //대기
  rejected, //거절
}

void main() {
  Status status  = Status.pending;
  
  if(status == Status.approved){
    print("승인");
  }
  else if(status == Status.pending){
    print("대기");
  }
  else{
    print("거절");
  }
}

enum type은 한정된 상수값 집합을 나타내기 위해 사용

직관적인 코드 작성에 유용

열거형의 명칭은 첫 문자를 대문자로 쓰는 게 관례

 

 

함수

// 3개 숫자 더하고 그 값이 짝수인지 홀수인지 알려주는 함수

#1

void main() {
  addNums();
}

addNums(){
  int num1 = 10;
  int num2 = 20;
  int num3 = 30;
  
  int sum = num1 + num2 + num3;
  
  print("num1: $num1");
  print("num2: $num2");
  print("num3: $num3");
  
  if (sum % 2 == 0){
    print("짝수");
  }
  else {
    print("홀수");
  }
}

#2

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

addNums(int num1, int num2, int num3){
  int sum = num1 + num2 + num3;
  
  print("num1: $num1");
  print("num2: $num2");
  print("num3: $num3");
  
  if (sum % 2 == 0){
    print("짝수");
  }
  else {
    print("홀수");
  }
}

위 #1, #2의 결과값은 아래와 같음

 

num1: 10
num2: 20
num3: 30
짝수

 

#2 처럼 매개변수 이용 가능

 

 

parameter / argment: 매개변수

positional parameter: 순서가 중요한 매개변수

optional parameter: 있어도 되고 없어도 되는 매개변수

named parameter: 이름이 있는 매개변수(순서가 중요하지 않음)

arrow function: 화살표 함수

 

 

함수 안 매개변수를 []로 묶어주면 optional parameter가 됨

ex) addNums(int num1, [int num2, int num3])

하지만 여기서 []안 값들에 에러가 남 

-> 값이 null일 수도 있는데 int로 선언해주면 null이 못들어가기 때문

    이 때는 int num2 = 20, int num3 = 30 처럼 기본값을 설정해주면 됨

    ex) addNums(int num1, [int num2 = 20, int num3 = 30])

만약 main()의 addNums(10, 20, 30) 이렇게 설정해주면 optional parameter 값도 main()에서 정의해줬으므로 미리 설정한 기본 값은 무시됨

 

void main() {
  addNums(num1: 10, num2: 20);
}

addNums({
  required int num1,
  required int num2,
  int num3 = 30,
}){
  int sum = num1 + num2 + num3;
  
  print("num1: $num1");
  print("num2: $num2");
  print("num3: $num3");
  
  if (sum % 2 == 0){
    print("짝수");
  }
  else {
    print("홀수");
  }
}

named parameter에서도 required 사용하느냐, 안하느냐에 따라 optional parameter를 사용할 수 있음

 

 

void

return type

void main() {
  int res1 = addNums(num1: 10, num2: 20);
  int res2 = addNums(num1: 20, num2: 30, num3: 40);
  print("result1: $res1");
  print("result2: $res2");
  print("sum: ${res1 + res2}");
}

addNums({
  required int num1,
  required int num2,
  int num3 = 30,
}){
  int sum = num1 + num2 + num3;
  
  print("num1: $num1");
  print("num2: $num2");
  print("num3: $num3");
  
  if (sum % 2 == 0){
    print("짝수");
  }
  else {
    print("홀수");
  }
  return sum;
}

 

 

arrow function

void main() {
  int res1 = addNums(num1: 10, num2: 20);
  int res2 = addNums(num1: 20, num2: 30, num3: 40);
  print("result1: $res1");
  print("result2: $res2");
  print("sum: ${res1 + res2}");
}

addNums({
  required int num1,
  required int num2,
  int num3 = 30,
}) => num1 + num2 + num3;

=> 이 거 하나로 완전 편해졌다..

 

 

typedef

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

typedef Operation = int Function(int num1, int num2, int num3);
int add(int num1, int num2, int num3) => num1 + num2 + num3;
int subtract(int num1, int num2, int num3) => num1 - num2 - num3;

함수는 {}안에 수행할 내용을 넣지만 typedef는 그렇지 않음

typedef는 함수를 변수처럼 사용할 수 있게 해 줌

 

void main() {
  Operation operation = add;
  int res1 = operation(10, 20, 30);
//   print(res1);
  operation = subtract;
  int res2 = operation(10, 20, 30);
//   print(res2);
  
  int res3 = calc(30, 40, 50, add);
  print(res3);
  int res4 = calc(30, 40, 50, subtract);
  print(res4);
}

// signature
typedef Operation = int Function(int num1, int num2, int num3);
int add(int num1, int num2, int num3) => num1 + num2 + num3;
int subtract(int num1, int num2, int num3) => num1 - num2 - num3;

// 아래와 같이 많이 사용
int calc(int num1, int num2, int num3, Operation operation){
  return operation(num1, num2, num3);
}

 

 

 


Tiny Star