지식/Flutter

Dart Final 과 Const

ZeroAct 2023. 1. 21.

목차

728x90
반응형

Language tour | Dart

 

A tour of the Dart language

A tour of all the major Dart language features....

dart.dev

Dart 에서는 상수를 두가지 방법으로 선언할 수 있다.

Final

값을 수정할 수 없는 변수이다.

하지만 초기화를 안해도 된다.

선언 후에 딱 한번 값을 할당할 수 있다.

Dart Final 과 Const - undefined - undefined - FinalDart Final 과 Const - undefined - undefined - Final

final int a = 3;

이렇게도 할 수 있다.

타입 지정을 안하면 var 로 간주되어 dynamic 하게 받아온다.

 

Const

final 과 같이 값을 수정할 수 없다.

 

하지만 동작 과정에서 큰 차이가 있는데,

final 은 runtime 중에 값이 메모리에 올라가고

Const 는 compile 타임에 올라간다.

런타임 중에 메모리 부하가 줄어들 것이다.

상수 값이 필요하다면 (초기에 지정할 수 있는 상황이라면) final 보다는 항상 나은 선택지가 될 것 같다.

Dart Final 과 Const - undefined - undefined - Const

 

const 의 강점은 인스턴스 생성자에서 더욱 빛을 발휘한다.

const 생성자를 사용하면 인스턴스 자체를 캐시 처럼 사용할 수 있다.

 

똑같은 내용물의 객체를 단순히 100번 생성한다고 해보자.

그러면 런타임 중에 메모리에 100번이나 내용물이 올라갈 것 이다.

하지만 const 생성자를 사용하게 되면 동일한 객체를 여러번 생성하지 않고 메모리에 올라가있는 객체를 100번 재사용하게 된다.

 

즉, 파라미터가 같은 객체에 대해서 재사용이 가능하다

Dart Final 과 Const - undefined - undefined - ConstDart Final 과 Const - undefined - undefined - Const

왼쪽은 메모리에 객체가 4번 올라갔고, 오른쪽은 2번만 올라갈 것이다.

 

이렇게 동일한 내용물의 객체를 Canonical 이라고 표현하는 것 같다.

 

Ref.

Dart Const Tutorial – All You Need to Know (Const Expressions, Canonical Instances and More) - Reso Coder

728x90
반응형

'지식 > 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

댓글