공통점
이 둘은 모두 상수를 선언하는 키워드 입니다.
둘다 뒤에 어떠한 변수 타입을 명시해주지 않아도,
초기화 되는 값으로 타입을 추론해주는 편리함이 있습니다.
차이점1
Final , Const 둘다 선언후에 재설정이 불가하지만, 어떤 차이가 있을까요?
const는 컴파일 타임에 반드시 초기화되야 하며, (컴파일 안전)
final은 런타임 시점에도 객체를 초기화 해줄 수 있습니다.(런타임에서 지정가능)
예시코드
1) 컴파일 시점 초기화
아래와 같이 컴파일 시점에 초기화는 모두 에러없이 수행된다.
2) 런타임시점 초기화
아래와 같이 런타임 시점에 값이 결정되는 경우, const 는 지정 불가하다는 에러가 발생한다.
main() {
const DateTime now1 = new DateTime.now(); // error const 는 실행시에 결정되는 값을 설정할 수 없다. 정해진 값만 가능하다.
final DateTime nw = new DateTime.now(); // final 은 실행시에 결정되는 값도 설정할 수 있다.
}
const는 반드시 컴파일시점에 초기화가 필요하다는것을 알 수 있다.
const 는 우리가 흔히 사용하는 상수 변수 (원주율, 최댓값, 이름, 타이틀 , 위젯 등)에 많이 사용하며
final 은 const 사용의 경우뿐 아니라, 인스턴스를 담거나, 지연 초기화 등이 필요한 부분에서 사용이 가능합니다.
차이점 2
const는 컴파일 된 후 오브젝트의 필드 수정이 불가하지만,
final은 런타임중에 오브젝트의 필드 값을 변경 할 수 있습니다.
const와 final은 변경불가한 객체와 데이터를 만드는 키워드로
프로그래밍을 좀 더 리소스낭비를 줄여 최적화하고, 안정성을 높이는데 중요한 요소이다.
둘의 차이를 잘 알고 사용하는 습관을 가지자.
참조 : https://dart.dev/guides/language/language-tour#final-and-const
'Study > Flutter' 카테고리의 다른 글
[Dart] 동적변수 var, dynamic 비교 (0) | 2022.05.09 |
---|---|
[Dart] Future async await 란? (0) | 2022.05.05 |
[Flutter] Hot Restart, Hot Reload 차이점 (0) | 2022.05.05 |
[Flutter] Pubspec.yaml 에 대해서 (0) | 2022.05.05 |
[Flutter] 공부 사이트 (0) | 2022.05.05 |