ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [개발일지] Dart 입문 1: 언어 기본
    Study/Development 2022. 8. 17. 23:01

     

    <인프런 코드팩토리 강의 수강일지>

     

    1. 변수 선언 / 자료형

    void main() {
      var name = 'John'; // variable: 변수
      int num1 = 10; // integer: 정수
      double num2 = 2.5; // 실수
      bool isTrue = true; // Boolean: 맞다, 틀리다
      String lastname = 'Smith'; // 문자
      dynamic myname = 'legend'; // 다양한 자료형 가능, 자료형 종류 변경 가능
      myname = 0; //
    
      // 출력하기
      print(name + lastname); // JohnSmith
      print(name.runtimeType); // String
      print('${name.runtimeType} ${lastname}'); // String Smith - 변수 + 문자
      print('$name $lastname'); // John Smith 변수 하나만 사용하는 경우 {}생략 가능
      print(myname); // 0
    
      // 연산하기
      print(num1 + num2); // 12.5
      print(num1 - num2); // 7.5
      print(num1 / num2); // 4
      print(num1 * num2); // 25
    }

     

    2. nullable / non-nullable

    void main() {
      // nullable - null이 될 수 있다.
      // non-nullable - null이 될 수 없다.
      // null 아무 값도 있지 않다.
    
      String name = 'John Smith';
    
      print(name); // null 값을 넣을 수 없다.
    
      String? name2 = 'black pink'; // 어떤 타입이든 ?를 붙이면 null 값도 저장 가능
    
      print(name2!); // !를 사용할 때, 현재 이 값은 null이 아니다 가능
    }
    void main() {
      double? num2 = 4.0;
    
      print(num2); // 4
    
      num2 = 2.0;
      
      print(num2); // 2
    
      num2 = null;
    
      print(num2); // null
    
      num2 ??= 3.0; // ??= : null일 경우 우측 값으로 바꿔라
    
      print(num2); // 3
    }

     

    3. final/const로 선언하기

    void main() {
      final name = 'John'; // = final String name과 동일
    
    // name = 'Adam'; --> final로 선언하면, 변수 변경 불가능
    
      const name2 = 'Smith'; // const String name과 동일
    
      final DateTime now = DateTime.now(); // build time의 값을 몰라도 된다.
      const DateTime now2 = DateTime.now(); // error: build time의 값을 알아야만 한다
    }

     

    4. ++, --

    void main() {
      int num = 2;
    
      num++;
    
      print(num); // 2+1 = 3
    
      num--;
    
      print(num); // 3-1 = 2
    }

     

    5. 비교하기

    void main() {
      int num1 = 1;
      int num2 = 2;
    
      print(num1 > num2); // false
      print(num1 < num2); // true
      print(num1 >= num2); // false
      print(num1 <= num2); // true
      print(num1 == num2); // false
      print(num1 != num2); // true
    }

     

    6. 자료형 확인하기

    void main() {
      int num1 = 1;
    
      print(num1 is int); // 정수인가? true
      print(num1 is String); // String인가? false
    
      print(num1 is! int); // 정수가 아닌가? false
      print(num1 is! String); // String이 아닌가? true
    }

     

    7. and / or 조건

    void main() {
      // && - and 조건
      // || - or 조건
    
      bool result = 12 > 10 && 1 > 0; // o o
    
      print(result); // true
    
      bool result2 = 12 > 10 && 0 > 1; // o x
    
      print(result2); // false
    
      bool result3 = 12 > 10 || 1 > 0; // o o
    
      print(result3); // true
    
      bool result4 = 12 > 10 || 0 > 1; // o x
    
      print(result4); // true
    
      bool result5 = 12 < 10 || 0 > 1; // x x
    
      print(result5); // false 
    }

     

    8. 리스트 []

    void main() {
      // List 리스트
    
      List<String> blackPink = ['제니', '로제', '지수', '리사'];
      List<int> numbers = [1, 2, 3, 4, 5, 6];
    
      print(blackPink);
      print(numbers);
    
      
      // index: 순서, 0부터 시작
    
      print(blackPink[0]); // 제니
      print(blackPink[1]); // 로제
      print(blackPink[2]); // 지수
      print(blackPink[3]); // 리사
      print(blackPink[4]); // error
    }

     

    9. 맵{}

    void main() {
      // Map: Key / Value
    
      Map<String, String> dic = {
        'Harry': '해리',
        'Ron': '론',
        'Hermione': '헤르미온느',
      };
    
      print(dic); // {Harry: 해리, Ron: 론, Hermione: 헤르미온느}
    
      Map<String, bool> isHarryPotter = {
        'Harry': true,
        'Ron': true,
        'Ironman': false,
      };
    
      print(isHarryPotter); // {Harry: 해리, Ron: 론, Hermione: 헤르미온느}
    
      isHarryPotter.addAll({
        'Spiderman': false,
      }); // {}내의 자료들 전부 추가하기
    
      print(isHarryPotter); // {Harry: true, Ron: true, Ironman: false, Spiderman: false}
    
      print(isHarryPotter['Ironman']); // false
    
      isHarryPotter['Hulk'] = false; // 1개 추가하기
    
      print(isHarryPotter); // {Harry: true, Ron: true, Ironman: false, Spiderman: false, Hulk: false}
    
      isHarryPotter['Spiderman'] = true; // value 변경하기
    
      print(isHarryPotter); // {Harry: true, Ron: true, Ironman: false, Spiderman: true, Hulk: false}
    }

     

    10. 세트 {}: 리스트와 유사, 중복 값 포함 불가

    void main() {
      // Set
      final Set<String> names = {
        'apple',
        'banana',
        'carrot'
      };
      
      print(names); // {apple, banana, carrot}
      
      names.add('dog');
      
      print(names); // {apple, banana, carrot, dog}
      
      names.remove('dog');
      
      print(names); // {apple, banana, carrot}
      
      print(names.contains('carrot')); // 포함 검사: true
        
        
    }

     

    11. if

    void main() {
      // if 문
      
      int num = 3;
      
      if(num % 3 == 0){
        print('나머지가 0입니다');
      } else if(num % 3 == 1){
        print('나머지가 1입니다');
      } else{
        print('나머지가 2입니다');
      }
    }

     

    12. switch

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

     

    13. loop: for loop

    void main() {
      // for loop
    
      for (int i = 0; i < 10; i++) {
        print(i); // 0 ~ 9 출력
      }
    
      // list 사용하기
    
      int total = 0;
    
      List<int> numbers = [1, 2, 3, 4, 5, 6];
    
      for (int i = 0; i < numbers.length; i++) {
        total += numbers[i];
      }
    
      print(total); // 21
    
      // for in loop
    
      total = 0;
    
      for (int number in numbers) {
        total += number;
      }
    
      print(total); // 21
    }

     

    14. loop: while loop

    void main() {
      // while loop
    
      int total = 0;
    
      while (total < 10) {
        total += 1;
      }
    
      print(total); // 10
    
      // do-while: 잘 사용 안함
      total = 0;
    
      do {
        total += 1;
      } while (total < 10);
    
      print(total); // 10
    }
    void main() {
      // while loop - break
    
      int total = 0;
    
      while (total < 10) {
        total += 1;
        if (total == 5) {
          break;
        }
      }
    
      print(total); // 5: total이 5가 됐을 때 break
    }

     

    15. loop: break & continue

    void main() {
      // for loop - break
      int total = 0;
      for (int i = 0; i < 10; i++) {
        total += 1;
        if (total == 5) {
          break; // if 조건 충족했을때 종료
        }
      }
      print(total); // 5 
    
      // for loop - continue
      for (int i = 0; i < 10; i++) {
        if (i == 5) {
          continue; // if 조건 충족했을 때, 건너뜀
        }
        print(i); // 5 제외하고 출력
      }
    }

     

    16. 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('거절입니다.');
      }
    }

     

    17. 함수

    void main() {
      addNumbers(10, 20, 11);
    }
    
    // 세개의 숫자 (x,y,z)를 더하고 짝수인지 홀수인지 알려주는 함수
    // parameter / argument - 매개변수
    addNumbers(x, y, z) {
      int sum = x + y + z;
    
      print('x:$x');
      print('y:$y');
      print('z:$z');
    
      if (sum % 2 == 0) {
        print('짝수입니다.');
      } else {
        print('홀수입니다.');
      }
    }
    void main() {
      addNumbers(10, 20, 11);
      addNumbers2(10, 20);
      addNumbers3(y: 20, z: 30, x: 11);
    }
    
    // 세개의 숫자 (x,y,z)를 더하고 짝수인지 홀수인지 알려주는 함수
    // parameter / argument - 매개변수
    // positional parameter - 순서가 중요한 파라미터
    addNumbers(int x, int y, int z) {
      int sum = x + y + z;
    
      print('x:$x');
      print('y:$y');
      print('z:$z');
    
      if (sum % 2 == 0) {
        print('짝수입니다.');
      } else {
        print('홀수입니다.');
      }
    }
    
    // optional parameter - 있어도 되고 없어도 되는 파라미터
    // 기본값 지정 가능
    addNumbers2(int x, [int y = 0, int z = 0]) {
      int sum = x + y + z;
    
      print('x:$x');
      print('y:$y');
      print('z:$z');
    
      if (sum % 2 == 0) {
        print('짝수입니다.');
      } else {
        print('홀수입니다.');
      }
    }
    
    // named parameter - 이름이 있는 파라미터
    
    addNumbers3({
      required int x,
      required int y,
      required int z,
    }) {
      int sum = x + y + z;
    
      print('x:$x');
      print('y:$y');
      print('z:$z');
    
      if (sum % 2 == 0) {
        print('짝수입니다.');
      } else {
        print('홀수입니다.');
      }
    }

     

    18. typedef

     - 함수를 미리 시그니처화 해서 여러가지 함수를 유용하게 사용

    void main() {
      Operation operation = add;
    
      int result = operation(10, 20, 30);
    
      print(result);
    
      operation = sub;
    
      int result2 = operation(10, 20, 30);
    
      print(result2);
    
      int result3 = cal(30, 40, 50, add);
      
      print(result3);
      
      int result4 = cal(40, 50, 60, sub);
      
      print(result4);
    }
    
    // signature
    typedef Operation = int Function(int x, int y, int z);
    
    // 더하기
    int add(int x, int y, int z) => x + y + z;
    
    //빼기
    int sub(int x, int y, int z) => x - y - z;
    
    // 계산
    int cal(int x, int y, int z, Operation operation) {
      return operation(x, y, z);
    }
    반응형

    댓글

© 2023. titann all rights reserved