Dart 에서는 상수를 두가지 방법으로 선언할 수 있다.
Final
값을 수정할 수 없는 변수이다.
하지만 초기화를 안해도 된다.
선언 후에 딱 한번 값을 할당할 수 있다.
final int a = 3;
이렇게도 할 수 있다.
타입 지정을 안하면 var 로 간주되어 dynamic 하게 받아온다.
Const
final 과 같이 값을 수정할 수 없다.
하지만 동작 과정에서 큰 차이가 있는데,
final 은 runtime 중에 값이 메모리에 올라가고
Const 는 compile 타임에 올라간다.
런타임 중에 메모리 부하가 줄어들 것이다.
상수 값이 필요하다면 (초기에 지정할 수 있는 상황이라면) final 보다는 항상 나은 선택지가 될 것 같다.
const 의 강점은 인스턴스 생성자에서 더욱 빛을 발휘한다.
const 생성자를 사용하면 인스턴스 자체를 캐시 처럼 사용할 수 있다.
똑같은 내용물의 객체를 단순히 100번 생성한다고 해보자.
그러면 런타임 중에 메모리에 100번이나 내용물이 올라갈 것 이다.
하지만 const 생성자를 사용하게 되면 동일한 객체를 여러번 생성하지 않고 메모리에 올라가있는 객체를 100번 재사용하게 된다.
즉, 파라미터가 같은 객체에 대해서 재사용이 가능하다
왼쪽은 메모리에 객체가 4번 올라갔고, 오른쪽은 2번만 올라갈 것이다.
이렇게 동일한 내용물의 객체를 Canonical 이라고 표현하는 것 같다.
Ref.
'지식 > Flutter' 카테고리의 다른 글
Dart 반복문 (0) | 2023.01.23 |
---|---|
Dart 조건 분기 (0) | 2023.01.23 |
Dart functions (0) | 2023.01.23 |
Dart 자료형 (1) | 2023.01.21 |
Dart 설치 (0) | 2023.01.21 |
댓글