Flutter/초급

[Dart] final과 const의 차이

안드선생 2022. 10. 21. 21:02
반응형

final vs const


final과 const의 공통점

  • 변수를 한 번 선언하면 값을 변경할 수 없다.

 

final과 const의 차이점

  • final
실행 중에 값이 결정된다.

즉, 코드를 컴파일 하는 시점이 아닌,
컴파일이 완료된 후 실제 프로그램을 실행하여 final 변수가 실행될 때 값이 결정된다.

 

  • const
컴파일 시에 값이 결정된다.

즉, 코드를 컴파일 하는 시점에 값이 결정된다.

둘의 차이를

DateTime.now()라는 함수를 통해서 좀 더 쉽게 이해해보자.

 

DateTime.now() 함수는 컴파일이 완료된 후 해당 코드가 실행될 때의 현재 시간을 불러오는 함수이다.

 

그래서 아래와 같은 코드를 실행했을 때,

final Datetime nowDate = DateTime.now();
const Datetime nowDate2 = DateTime.now();

const 타입인 nowDate2 는 에러가 날 것이다.

 

왜냐하면,

final은 컴파일이 완료된 후 프로그램이 실행될 때 값이 결정되지만

const는 컴파일 시점에 값이 결정되기 때문이다.

 

즉, 컴파일 시점에 값을 결정하는 const에는

컴파일 후 값을 결정하는 함수인 DateTime.now()라는 함수를 사용할 수 없는 것이다.

 

https://github.com/HongEunho

반응형