ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Dart 문법 정리
    Flutter 2023. 7. 28. 15:40
    728x90
    반응형
    SMALL

    1. 변수 선언

    // 정수
    int variable1 = 10;
    
    // 소수
    double variable2 = 2.5;
    
    // 참/거짓
    bool variable3 = true, false;
    
    // 문자열
    String varibale4 = "문자열";
    
    // 타입 자동 유추
    var variable5 = "var";
    dynamic variable6 = "dynamic";

     

    dynamic과 var의 차이

    • var은 선언 시 지정한 타입으로 고정되어 다른 타입을 할당 할 수 없습니다.
    • dynamic은 선언 시 지정한 타입과 다른 타입으로 할당 할 수 있습니다.
    dynamic variable1 = "dynamic";
    var variable2 = "var";
    
    variable1 = 10
    variable2 = 10 // 오류

     

    nullable & non-nullable

    타입 뒤에 ? 연산자를 붙여주면 null일 가능성이 있는 nullable 변수라는 뜻입니다.

    String? variable1 = "hi hi";
    variable = null;

    nullable한 변수 뒤에 ! 를 넣어주면 이 nullable 변수가 null이 아니라는 것을 단언해주는 것입니다.

     

     

    final & const

    final String name1 = "cotton";
    const String name2 = "cotton";

    두 키워드는 모두 선언된 변수를 변경 할 수 없도록 해줍니다.

    두 키워드로 선언된 변수는 다시 변경 할 수 없으므로 타입을 생략해서 선언해주어도 됩니다.

    두 키워드의 차이점

    • const 키워드는 빌드 타임 당시 할당 되는 값을 알고 있어야 합니다. (DateTime.now() 와 같이 런타임 당시에 정해지는 값은 지정 할 수 없습니다)
    • final 키워드는 빌드 타임 당시 할당 되는 값을 알고 있지 않아도 됩니다.

     

    연산자

    int num1 = 1;
    int num2 = 2;
    
    // 더하기
    print(num1+num2); // 3
    
    // 빼기
    print(num1-num2); // -1
    
    // 나누기
    print(num1/num2); // 0.5
    
    // 곱하기
    print(num1*num2); // 2
    
    num1+=1;
    print(num1); //2
    
    num1-=1;
    print(num1); // 1
    
    num1*=2;
    print(num1); // 2
    
    num/=2;
    print(num1); //1
    
    // 단항 연산자
    num1++;
    print(num1) // 2;
    
    bool bool1 = true;
    print(bool1!); // false
    
    // 논리 연산자
    bool bool2 = true && true; // true
    bool bool3 = false && true; // false
    bool bool4 = true || false; // true
    bool bool5 = false || false; // false
    
    // null check
    int? num3 = 3;
    int? num4 = null;
    num3 ??= 4; //왼쪽 변수가 null 일 때만 오른쪽의 값을 할당해줍니다.
    num4 ??= 4; //왼쪽 변수가 null 일 때만 오른쪽의 값을 할당해줍니다.
    print(num3); // 3
    print(num4); // 4
    
    // 크기 비교
    print(num1<num2); // true
    print(num1>num2); // false
    print(num1==num2); // false
    print(num1!=num2); // false
    print(num1<=num2); // true
    print(num1>=num2); // false
    
    // 타입 비교
    print(num1 is int); // true
    print(num1 is! int); // false

     

     

    리스트

    List<T> generic 타입으로 리스트 원소의 타입을 지정해줍니다.

    List<String> stringList = ['s1','s2','s3'];
    
    print(stringList[0]); // s1
    print(stringList.length); // 3
    
    stringList.add('s4');
    print(stringList[3]); // s4
    
    stringList.remove('s3');
    print(stringList); // s1, s2, s4
    
    print(stringList.indexOf('s2'); // 1

     

     

    Map<K,V> 키와 밸류 타입을 지정해줄 수 있습니다.

    Map<String, String> map1 = {'key1':'value1'};
    
    // 값 추가
    map1.addAll({'key2','value2'});
    map1['key3'] = 'value3';
    
    // value 반환
    print(map1['key2']); // value2
    
    // 값 제거
    map1.remove('key2');
    
    print(map1.keys) // key1, key3
    print(map1.values) // value1, value2

     

     

    Set<T> T타입의 집합입니다. 중복된 값이 없도록 저장해줍니다.

    Set<int> set1 = {1,2,3,4,5};
    
    set1.add(6);
    set1.add(4);
    
    print(set1) // 1,2,3,4,5,6
    
    print(set1.contains(4)); // true

     

     

    if 문 for문 while 문

    if(조건1){
        실행문1
        ...
    } else if(조건2){
        실행문2
        ...
    } else {
        실행문3
        ...
    }
    
    switch(변수) {
        case 조건1:
            실행문1
            break
        case 조건2:
            실행문2
            break
        default:
            실행문3
            break
    }
    
    for(반복 변수 선언; 반복 조건; 반복 변수 연산){
        실행문
    }
    
    // 예시2
    for(int i=0;i<10;i++){
        실행문
    }
    
    // 예시2
    List<int> numberList = [1,2,3,4,5];
    for(int number in numberList){
        실행문
    }
    
    while(반복 조건){
        실행문
    }
    
    // break, continue
    for(int i=0; i<10; i++){
        ...
        if(i==5){
            break;
        }
        ...
    }
    // i가 4까지만 반복됩니다.
    
    int i=0
    while(i<10){
        i+=1;
    
        if(i==4){
            continue;
        }
        print(i);
    }
    // 4는 출력되지 않습니다.

     

     

    함수

    <Type> <함수명>(<매개변수 타입> <매개변수 명>){
        실행문
    }
    
    void add(int n1, int n2, int n3){
        print(n1+n2+n3);
    }
    
    add(1,2,3); // 6

     

     

    optional parameter

    매개 변수 중 항상 필요한 매개 변수가 아닐 경우 optional parameter로 선언할 수 있습니다.

    optional parameter는 미리 값을 할당해 줌으로써 인자를 받지 못해도 실행문 상에서 사용되도록 할 수 있습니다.

    optional paramter에 새로운 값을 넣어주면 미리 할당해준 값들은 무시가 되고 새로 들어온 값이 매개변수에 할당됩니다.

    void add(int n1, [int n2=2, int n3=3]){
        print(n1+n2+n3);
    }
    
    add(1); // 6
    add(1,5,10); // 16

     

     

    named paramter

    이전까지의 매개변수는 모두 순서를 통해 어떤 매개변수인지 구분하는 매개변수였습니다.

    named paramter는 이름으로 매개변수들을 구분해줍니다.

    매개 변수의 default는 optional parameter이고 꼭 필요한 매개변수인 경우 required 키워드를 지정해주어야만 합니다.

    void add({
        required int x,
        required int y,
        int z=10 // z는 optional parameter이므로 꼭 default 값을 넣어주어야 합니다.
    }){
        print(x+y+z);
    }
    
    add(x: 1, y: 2); // 13
    add(x: 1, y: 2, z: 3); // 6

     

     

    arrow function

    실행문이 한 줄로 짧고 반환되는 값이 있을 경우 사용됩니다.

    int add(int num1, int num2) => num1+num2;
    
    print(add(4,5)) // 9

     

     

    typedef

    함수에 대한 타입을 가질 수 있습니다.

    이로 인해 함수를 함수의 매개변수로 가질 수도 있고 반환 타입으로 설정 할 수 있습니다.

    typedef Operation = int Function(int x,int y);
    
    int add(int x, int y) => x+y;
    
    int func(int x, int y, Operation f){
        return f(x,y);
    }
    
    print(func(1,2,add)) // 3
    
    
    
    
    typedef o1 = int Function(int x1, int x2);
    
    o1 func(int x4, int x5){
      int v1(int x1, int x2){
        return x4+x5+x1+x2;
      }
    
      return v1;
    }
    
    print(func(4,5)(1,2)) // 12
    반응형
    LIST

    댓글

Designed by Tistory.