일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 앱
- VerticalMultiDragGestureRecognizer
- Chrome Developer Tools
- 플루터
- fullBackupContent
- Set ID
- 프로그래머스
- StringUtils.isBlank
- carousel slider
- Flutter
- 에러
- StringUtils.isEmpty
- foreground
- 입력 커서
- Could not create service of type FileAccessTimeJournal using
- 플러터
- TextFormField
- 안드로이드
- gestureRecognizers
- 두 수의 나눗셈
- 안보내짐
- Flutter SDK
- not working
- 웹뷰
- allowBackup
- TCP/IP모델
- 크롬개발자도구
- project flow
- runSpacing
- freezed
- Today
- Total
흰오목눈이야 개발하자
[Flutter, Dart] const, final 차이점 본문
자바를 공부하고 안드로이드에서 코딩할 때는 변할 수 없는 값(=재할당 할 수 없는 값)을 설정할 때 대체로 final을 사용했습니다.
다트라는 언어를 배우고 플러터 코딩을 할 때는 final만 있는 게 아니라 const도 있어서 둘 다 사용이 가능했는데 이 차이를 몰라 정리를 해보려 합니다.
변하지 않는 값을 지정할 때 아래와 같이 사용할 수 있습니다.
const String nameConst = "Shu";
final String nameFinal = "Shu";
공통점은 한 번 지정하면 값을 변경할 수 없습니다. (= 재할당 불가)
예)
const String nameConst = "Shu";
final String nameFinal = "Shu";
nameConst = "Shua"; // error발생
nameFinal = "Shua"; // error발생
const, final 차이점
final
- final 변수는 런타임시에(runtime) 초기화되며 한 번만 할당할 수 있습니다.
+) 런타임이란? : 프로그램이 실행되고 있는 동안의 동작을 의미합니다. Flutter(플러터)에서 런타임은 플러터 앱이 실행되는 기간을 나타냅니다. 앱이 실행될 때 시작되어 사용자 또는 운영 체제에 의해 앱이 닫히거나 종료될 때까지 계속됩니다. |
- 플러터의 경우, state(상태)가 업데이트되면 build 메서드 안에 있는 모든 것들이 초기화됩니다. 이때, final을 포함한 모든 변수가 포함이 됩니다.
- 클래스, 함수 둘 다 정의가 가능합니다.
@override
Widget build(BuildContext context) {
...
}
const
- const는 컴파일할 때(complie time) 초기화되고 런타임에는 이미 할당이 됩니다.
+) 컴파일이란? : 기계어 코드로 변환되는 것을 의미합니다. Flutter(플러터)에서 컴파일 타임은 Flutter 코드가 기기나 에뮬레이터에서 실행할 수 있는 기계어 코드로 바꾸는 시간을 의미합니다. 컴파일 타임 동안 Flutter 앱을 구성하는 Dart 코드는 대상 플랫폼에서 실행할 수 있는 기계 코드로 변환됩니다. |
- 플러터의 경우, state(상태)가 업데이트되었을 때 build 메소드에서 모든 것이 초기화되지 않습니다.
- 클래스에서 정의할 수 없습니다. 하지만 함수에서는 정의가 가능합니다.
- const는 런타임중에는 변경할 수 없습니다.
언제 어떤 키워드를 사용해야하나요?
- final을 사용하는 경우 : 컴파일할 때 값이 무엇인지 모르는 경우, 예를 들면 API로부터 값을 받아와야 할 경우 사용됩니다.
- const를 사용하는 경우 : 코드를 실행할 때 값이 변경되지 않을 경우라고 확신하는 경우입니다. 예를 들어, 항상 동일하게 유지되는 단어/문장을 선언할 경우 사용됩니다.
참조) https://itnext.io/difference-between-const-and-final-in-dart-78c129d0c573
Difference between Const and Final in Dart
Let’s find out the difference between const and final keywords in Dart and Flutter
itnext.io