티스토리 뷰

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

(벨로그에서 더 편하게 볼 수 있습니다)

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함