ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Flutter] Dart 변수: final, const 선언 살펴보기
    App 2024. 6. 20. 15:28

    Dart의 finalconst 변수는 일반적으로 한번 정의하고 바뀌지 않는 변수를 선언할때 쓰이지만

    각각의 특징이 있다.

    미리보기 및 정리

      final const
    미리 선언, 후 할당 가능 불가능
    인스턴스 변수 선언 가능 불가능
    일반 클래스 선언 가능 불가능
    클래스 선언 후 멤버변수 수정 가능 불가능

    (** 이렇게 써놓으니까 어렵고 많은 차이가 있는 것 같다.)

     

    ## final

    • 할당된 값을 변경하지 않을때 사용
    final name = "Thewy";
    name = "Chewys"; // 불가능
    • 선언하고 후에 값을 할당 가능
    final finalLate;
    finalLate = 42; // 가능
    class Class {
        final x = 15; // 가능
    }
    • 숫자, 문자열 리터럴, 상수 클래스뿐 아니라 일반 클래스에도 선언 가능
    void main(List<String> arguments) {
      final number = 0; // 가능
      final string = "String"; // 가능
      final map = {"key": "value"}; // 가능
      final constantClass = ConstantClass(); // 가능
      final exampleClass = Class(); // 가능 
    }
    
    class Class {
        var x = 15;
        final y = 30; // 가능
    }
    
    class ConstantClass {
      const ConstantClass();
    
      final name = "constant";
    }
    • 멤버변수, 객체 내부 값 변경 가능
    class Class {
        var x = 15;
    }
    
    void main(List<String> arguments) {
      final exampleClass = Class(); // 가능 
      exampleClass.x = 30; // 가능
    
      final map = {"key": "value"}; // 가능
      map["key"] = "value2"; // 가능
    }

     

    ## const

    • 할당된 값을 변경하지 않을때 사용
    const name = "Thewys";
    name = "Chewy"; // 불가능
    • 먼저 선언하고 후에 값을 할당 불가능
    const constLate;
    constLate = 43; //불가능
    class Class {
        const x = 13; // 불가능
    }
    • 숫자, 문자열 리터럴, 상수 변수, 상수 클래스에만 선언가능 (일반 클래스에는 선언 불가능)
     const number = 0; // 가능
     const string = "String"; // 가능
     const map = {"key": "value"}; // 가능
     const constantClass = ConstantClass(); // 가능
     const class = Class(); // 불가능
    • 멤버변수, 객체 내부 값 변경 불가능
    const map = {"key": "value"}; // 가능
    map["key"] = "value2"; //불가능 -- 정확히는 런타임시 에러가 남.

     

     

    ## 추가적인 내용

    final에서는 대부분 되고, const에서 안 되는게 많으니 final만 쓰는게 짱짱 아닐까 할 수 있겠지만,

    **const컴파일 타임 상수로 코드를 컴파일 할 때, 해당 값이 계산된다.

     

    실제 Flutter 개발을 하다보면, 위젯을 const 로 선언하라는 경고 문구를 많이 볼텐데, 동적으로 변화하지 않는 위젯이라면

    const 선언을 하여, 컴파일때 빌드하고 런타임 중에는 re-build 하지 않아 퍼포먼스를 향상시킬 수 있다.

     

     

Designed by Tistory.