티스토리 뷰
final vs const
final과 const는 Dart 언어의 대표적인 상수 선언 키워드입니다.
final과 const는 어떤 차이가 있는지 알아보겠습니다.
공통점
final
final int a = 10;
a = 5; // 오류: The final variable 'a' can only be set once.
const
const int b = 10;
b = 5; // 오류: Constant variables can't be assigned a value.
두 키워드는 값이 변하지 않아야 하는 상수의 특성을 가지고 있습니다.
차이점
final은 런타임 시점에 값이 할당되어 상수가 되고,
const는 컴파일 시점에 값이 할당되어 상수가 됩니다.
컴파일이 된 후에 런타임 상태가 되므로,
const는 프로그램이 실행되기 전에 컴파일하는 과정에서 할당이 되는데
이 때문에 차이가 생깁니다.
final
final a = DateTime.now();
print(a);
> 2024-03-05 19:27:27.106124
const
const b = DateTime.now();
// 오류: Const variables must be initialized with a constant value
DateTime.now()는 현재의 시간을 알려주는 코드입니다.
여기서의 현재란 코드가 실행되었을 때를 말하는데
final의 경우에는 코드가 실행되는 런타임 시점 동안에 할당이 되는 반면
const는 그 전에 할당을 받아야하기 때문에 오류가 발생합니다.
따라서 const는 프로그램을 실행하기 전에 값이 할당되어 있어야 정상적으로 사용할 수 있습니다.
또한 처음 상수를 선언할 때에도 다른 부분이 있습니다.
final
final int a;
final int a = 1;
const
const int b;
const int b = 1;
// 오류: The constant 'b' must be initialized.
final의 경우 선언하면서 값을 할당하지 않아도 나중에 1번 할당이 가능하지만
const는 선언하면서 바로 할당을 해줘야 합니다.
정리
- final과 const는 상수를 만들 때 사용하는 키워드이다.
- final은 런타임 시점에, const는 컴파일 시점에 값이 할당된다. (const 할당->final 할당)
- 런타임 중에 상수를 할당해야 할 경우에는 final을 사용해야 한다.
자료 : https://dart.dev/language/variables#final-and-const
velog : https://velog.io/@chojja7188/Dart-final-vs-const
(벨로그에서 더 편하게 볼 수 있습니다)
'Mobile > Flutter & Dart' 카테고리의 다른 글
[Flutter & Dart] var vs dynamic (0) | 2024.03.13 |
---|---|
[Flutter & Dart] Parameter, 매개 변수 (0) | 2024.03.08 |
[Flutter & Dart] Null-safety, 널 세이프티 (0) | 2024.03.07 |
[Flutter & Dart] Type casting, 형변환 (0) | 2024.03.06 |
댓글