[TIL] 2022-06-05 Dart Language - #13

Jongdroid·2022년 6월 5일
0

TIL

목록 보기
13/24
post-thumbnail

오늘도 다트다트 투척입니다~~
(구글에 다트라고 검색하면 다트판만 나오네요.. 머쓱,,)

22년 6월 5일 오늘의 키워드는 if, for, enum 입니다.
코딩을 하면서 어찌보면 가장 많이 사용하는 부분이 아닐까 생각됩니다~~


if 그리고 switch

  • 자바와 크게 다른 부분은 없습니다.
  • 공부를 하면서 느낀 것은 if문을 참 다양한 방식으로 작성할 수 있는 것 같습니다.
  • 아래와 같은 방식은 여러개의 else if절을 만들고 else절을 생략할 수 있습니다.

조건식에 따라 수행을 결정하는 가장 일반적인 방식입니다.

조건식 1false라면 조건식 2를 검사하고 true라면 수행합니다.
  int number = 3;

  if(number % 2 == 0) {	// 조건식1 
    print('나머지가 0입니다.');
  }
  else if (number % 2 == 1) { // 조건식2
    print('나머지가 1입니다.');
  }
  else {	// 조건식1,2 모두 false일 때 수행합니다.
    print('나머지가 2입니다.');
  }

조심하자!!

  • 다음과 같은 경우도 있다.
  • if를 {} 중괄호로 감싸지 않으면 한 줄까지 if절 내부 코드로 인지합니다. 따라서 중괄호를 사용하지 않으면 타인이 코드를 보았을때 헷갈릴 수 있을 것 입니다. --> 개인의 취향이지만 저는 항상 중괄호를 사용할 것 입니다.
  if(3!=3) // false
    print('실행4'); // if 내부 코드
    print('실행5'); // 실행

중복 if

  • 조건문안에 또 다른 조건문이 존재할 수 있습니다.
  • 6은 2의 배수이면서 동시에 3의 배수입니다. (2개의 조건식을 통해 검사하는 방법 혹은 조건식을 각각 분류하여 특정 행위가 필요한 경우 다음과 같이 중복 if를 작성할 수 있습니다.
  int num = 6;
  if (num % 2 == 0) {
    print('$num은 2의 배수');
    if (num % 3 == 0) {
      print('$num은 3의 배수');
    }
  }

꼭 if를 사용해야만 할까요? 그건 아닙니다. switch를 사용할 수 있습니다.

  • 상단에서 사용했던 if를 switch로 바꾸어 보겠습니다.
  • switch에 특징은 break;가 있어야 해당 부분을 실행하고 빠져나갈 수 있습니다.
  • else와 같이 다른 조건식을 참조하지 않는 경우 default를 사용합니다.
// number = 2
switch(number % 2) { // 조건식을 수행했을 때 결과가 0이면 case0을 1이면 case1을 수행합니다.
	case 0:
   	 print('나머지가 0입니다');
     break;
     
    case 1:
   	 print('나머지가 1입니다');
     break; 
	
    default:
   	 print('나머지가 2입니다');
     break;
}

반복문

  • 오늘은 for문을 살펴보았습니다.
  • 자바에서 알고 있던 for문과 조금 다른 점은 조건식에서 in이라는 것을 사용할 수 있습니다.
  • 반복문은 어떤 연산을 하거나, 리스트와 같은 데이터를 담고 있는 변수를 하나씩 읽는 등의 역할로 주로 사용하며, 중간에 if, break, continue 등을 사용할 수 있습니다.

기존에 주로 접하던 반복문
int형 List의 모든 데이터를 더 해봅시다!

List<int> numbers = [1,2,3,4,5,6];
int total = 0;

for (int i = 0; i<numbers.length; i++) {
	total += numbers[i];
}
print(total); // 21

in을 이용할 수도 있습니다.
상단과 같은 코드입니다.

for(int number in numbers) { // numbers를 number에 하나씩 대입합니다.
	total += number;	
}

중간에 if, break, continue 를 넣어볼까요?

  • continue를 만나면 skip하게 됩니다. (i가 5일때 5는 건너뜁니다.)
  • break는 switch에서 만났던 것 처럼, 반복문이 반복되는 과정에서 조건식 등을 통해 빠져나올 수 있습니다.
  for (int i =0; i < numbers.length; i++) {
    // i가 5일때 스킵
    if(i == 5) {
      continue;
  	}
    total += numbers[i];
}

Enum

처음 접해보는 개념입니다. 아직까지도 생소하지만 공부한 부분을 정리정리 합니다.

  • enum은 첫 문장에서 대문자를 사용하기를 권장하고 있습니다.
  • 특정 상황에서 사용되는 것끼리 묶어놓은 것 입니다. 조건문 등에서 이용할 때 상수를 이용하지 않고 enum을 이용한다면 다른 개발자가 알아보기 쉬울 것이라는 생각이 듭니다.
enum 선언
enum Status {
	approved, // 승인 
    pending,  // 대기
    rejectd,  // 거절
}

// enum 사용
Status status = Status.pending;

if (status == Status.pending) {
	print('대기 상태입니다');
}

❗️❗️ 으아닛... 잠깐만요. 이거 그냥 String status = 'pending'; 일케 쓰면 되자나염???

-> 해당 enum Status에는 정확히 3개의 값만 존재한다는 것을 다른 개발자 혹은 미래에 개발하는 타인이 쉽게 파악할 수 있습니다. 또한 String을 사용하였을때 발생할 수 있는 오타 등을, enum 사용을 통해 방지할 수 있습니다.

또 위에서도 언급했지만, 조건식에서 0,1,2 와 같이 코드를 작성하면 이게 무엇을 뜻하는지 단번에 이해하기 어려울 확률이 높습니다. (작성한 본인도 시간이 지나면 까먹을 수 있습니다.) 명확하게 나타내주면 역시 이해하기가 더욱 편할 것입니다.

profile
만드는 사람이 수고하면 쓰는 사람이 편하고 만드는 사람이 편하면 쓰는 사람이 수고롭다.

0개의 댓글