본문 바로가기

Programming/Flutter&Dart

Dart 기초 문법 정리 (2)

오늘 공부한 내용

  • list
  • map
  • operators (연산자)
  • final, const
  • if, switch 

1. list

void main() {

// 리스트 생성 
	
    List walletList = [];
    
// 리스트에 값 추가

    walletList.add('오백원');
    walletList.add('천원');
    walletList.add('만원');
    
    print(walletList);
    // [오백원, 천원, 만원]

// 리스트 인덱스를 이용한 리스트 원소 삭제

    walletList.removeAt(1);
    
    print(walletList);
    // [오백원, 만원]
    
// 리스트 인덱스를 이용한 값 호출

    print(walletList[0]);
    // 오백원
    print(walletList[1]);
    // 만원
    
// 리스트 인덱스를 이용한 값 변경

    walletList[1] = '오만원';
    print(walletList);
    // [오백원, 오만원]
    
}
void main(){

// 리스트 타입 지정
   
   List<String> walletList = [];
   
   walletList.add('백원');
   print(walletList);
   // [백원]
   
// 원소를 넣은 상태로 리스트 생성 (1)
   
   List fruits = [
     'Apple',
     'Banana',
     'Orange',
     'Watermelon',
     ];
 
   print(fruits);
   // [Apple, Banana, Orange, Watermelon]
   
// 원소를 넣은 상태로 리스트 생성 (2)
 
   List fruits2 = new List.from([
     'Apple',
     'Banana',
     'Orange',
     'Watermelon',
     ]);
     
   print(fruits2);
   // [Apple, Banana, Orange, Watermelon]

// 리스트 길이 
   
   print(fruits.length);
   // 4
   print(fruits2.length);
   // 4

}

 


2. map

void main() {

// key - value
// : 을 기준으로 좌측 = key, 우측 = value

// Map 생성(1)
   Map dict = {
     'Apple' : '사과',
     'Banana' : '바나나',
     'Watermelon' : '수박',
   };
   
   print(dict);
   // {Apple : 사과, Banana : 바나나, Watermelon : 수박}
   
   print(dict['apple']);
   // 사과

// Map 생성(2)
   Map dict2 = {};
   
   dict2.addAll({
     'Apple' : '사과',
     'Banana' : '바나나',
     'Watermelon' : '수박',
   });
   
   print(dict2);
   // {Apple : 사과, Banana : 바나나, Watermelon : 수박}
   
// 삭제 
   dict2.remove('Apple');
   print(dict2);
   // {Banana : 바나나, Watermelon : 수박}
   
// 변경
   dict2['Banana'] = '라따뚜이';
   print(dict2);
   // {Banana : 라따뚜이, Watermelon : 수박}
   print(dict2['banana']);
   // 라따뚜이
   
// key 값만 리스트로 출력
   print(dict2.keys.tolist());
   // [Banana, Watermelon]

// value 값만 리스트로 출력
   print(dict2.values.tolist());
   // [라따뚜이, 수박]
   


}
void main() {

// key와 value의 type 지정 가능

   Map<String, int> price = {
      'Apple' : 2000,
      'Banana' : 3000,
      'Watermelon' : 5000,
      };
      
   print(price);
   // {Apple : 2000, Banana : 3000, Watermelon : 5000}

}

map type은 파이썬의 dictionary와 비슷한 자료형이네요.

한 가지 주의할 점은,

key 값은 중복하여 사용할 수 없다는 특징이 있습니다. 만약 map에 추가할 때 실수로 이미 있는 key을 이용하면 한 개 더 생기는 것이 아닌 기존에 있던 key의 value 값을 바꿔줍니다. 쉽게 말하면 덮어쓰기가 됩니다.

 


3. operators 

void main(){

   int numA = 2;

// 1을 더하는 것
   numA ++;
   print(numA);
   // 3

// 1을 빼는 것
   numA --;
   print(numA);
   // 2
   
// null 설정 및 null 이면 어떤 값을 넣어라

   int? numB;
   print(numB);
   // null
  
   numB ??= 10;
   print(numB);
   // 10
  
// +=, -=, *=, /=
  
   double numC = 2;
   
   numD += 1;
   print(numD);  // 3
   
   numD -= 1;
   print(numD);  // 2
   
   numD *= 2;
   print(numD);  // 4
   
   numD /= 2;
   print(numD);  // 2
   
}

다른 언어들과 비슷한 모습이네요. 파이썬이나 C를 공부하셨다면 아마 쉽게 이해가 되는 부분들입니다. 

 

새로운 게 있다면 int? num B; 와 numB ??= 10; 이 부분이 될 것 같네요.

 

int? numB; 는 numB라는 변수에 null 값을 넣어라는 뜻입니다.

numB ??= 10; 은 numB의 값이 null이라면 10을 넣어주라는 뜻입니다.

 

그리고 조금 어려울 수 있는 개념을 뽑으면 += 가 될 것 같아요.

numD += 1; 은 풀어쓰면 다음과 같습니다.

numD = numD + 1;

numD에 원래 있던 값에 1을 더해주고 이를 다시 numD에 저장하라는 뜻입니다. 

-=, *=, /= 도 같은 원리로 적용하면 됩니다. 

 

다음으로 비교 연산자들이 있습니다. 

어렵지 않으므로 코드는 생략하겠습니다.

모두 true 또는 false 값인 bool type으로 나옵니다. 

 

1. <, >, <=, >=

2. ==, != 

3. &&, ||

4. 변수이름 is Type


4. final, const 

void main() {

// final
   final String nameA = '라따뚜이';

// const
   const String nameB = '미키마우스';

}

final과 const는 모두 값이 변하지 않게 해주는, 즉, 상수로 만든다는 뜻이다. 

기능은 똑같지만 둘은 작동방식에서 차이가 있다. 

 

final

- 런타임 시점에 할당된다.

 

const

- 컴파일 시점에 할당된다.

 

런타임 : 컴퓨터가 프로그램을 실행하는 것.

컴파일 : Dart 언어를 컴퓨터가 알아들을 수 있는 기계어로 변환하는 것.

 


5. if, switch

void main(){

// if

   int numA = 21;
   
   if(numA % 4 == 0){
     print('4의 배수 입니다.');
   }else if(numA % 4 == 1){
     print('나머지가 1입니다.');
   }else if(numA % 4 == 2){
     print('나머지가 2입니다.');
   }else{
     print('어떤 조건에도 맞지 않습니다.');
   }
   
// switch

   switch(numA % 4){
    case 0:
      print('4의 배수입니다.');
      break;
      
    case 1:
      print('나머지가 1입니다.');
      break;
      
    case 2:
      print('나머지가 2입니다.');
      break;
      
    default:
      print('어떤 조건에도 맞지 안습니다.');
      break;
    }
    
}

swich에서 각 조건에 break를 넣어주지 않으면 조건에 부합하더라도 다음 케이스로 넘어갑니다. 

 

 

'Programming > Flutter&Dart' 카테고리의 다른 글

Dart 기초 문법 (4)  (0) 2022.08.08
Dart 기초 문법 (3)  (0) 2022.08.04
Dart 기초 문법 정리 (1)  (0) 2022.08.03