반응형
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()라는 함수를 사용할 수 없는 것이다.
반응형