티스토리 뷰

흥미/Dart

#5 Final Variables / final과 const

RadderNepa 2023. 1. 8. 09:42

● 도입

- 변수는 아래의 방법으로 만들 수 있다고 배웠다.

void main() {
  var name = "garden";
  int age = 30;
}

- 위 2가지의 변수는 모두 나중에 수정할 수 있는 변수들이다.(올바른 데이터 타입을 넣어준다는 가정하에)

void main() {
  var name = "garden";
  int age = 30;

  name = "park";
  age = 29;
}

cf) var 키워드가 붙은 변수도 데이터 타입이 다르면 재할당 할 수 없다.(dart는 유연한 js가 아니라는 것을 명심)

String type의 name 변수를 int로 재할당 할 수 없다.


● final

- 한 번 정의된(할당된) 변수를 수정할 수 없게 만들려면 변수 선언 키워드를 final로 설정하면 된다.

- final이 붙으면 딱 한 번만 값을 할당할 수 있다.

void main() {
  final name = "garden";
  name = "park";
}

final이 붙은 name 변수는 재할당 할 수 없다.

 

- var 대신 final 키워드로 변수를 만들면 해당 변수는 수정할 수 없게 된다.

- final은 JS, TS의 const 키워드와 동일하다.

- 필수는 아니지만 아래와 같이 데이터 타입을 구체적으로 명시해 줄 수도 있다.(어차피 컴파일러가 알아서 타입을 추론)

String 타입을 명시


● final과 const

- 개인적으로 궁금해서 찾아본 내용이다.

 

1. 공통점

- final과 const 모두 한 번 값을 대입하면 변경할 수 없다.

 

2. 차이점

final

- final은 실행중에(런타임 시에) 값이 결정된다.(런타임 시에 결정되는 값을 상수로 설정)

- final은 final이 들어있는 해당 파일이 실행될 때 해당 위치에서 값이 결정된다.

const
- const는 컴파일 시에 값이 결정된다.(컴파일 타임에 상수를 설정)

- const는 const가 들어있는 파일을 컴파일할 때(기계어로 번역될 때) 값이 결정된다.

 

※ 정리 : final은 실행 중 값이 결정되지만 const는 컴파일 시 값이 결정된다.

출처 : https://jong99.tistory.com/166

ex)

- 어떤 프로그램이 실행될 때 시간에 대한 로그를 남기고 싶으면 DateTime.now()를 사용한다.
- 이때 아래와 같은 방식을 생각할 수 있다.

1. final log1 = DateTime.now();
--> 실행 중 시간이 결정되므로 사용 가능
--> final은 실행 시에 결정되는 값도 설정할 수 있다.

2. const log2 = DateTime.now();
--> 컴파일 시의 시간을 담을 수 없으므로 사용 불가(실행은 지금이 아니라 내일도 할 수 있는거니까)
--> const는 실행 시에 결정되는 값을 설정할 수 없다. 미리 정해진 값만 가능하다.

 

- 아래 글에서 참고

https://velog.io/@ruinak_4127/Dart-final%EA%B3%BC-const%EC%9D%98-%EC%B0%A8%EC%9D%B4

 

Dart final과 const의 차이

final와 const

velog.io

https://skymin2.tistory.com/52

 

Dart 언어의 const vs final 의 차이

Dart 언어에는 const, final 키워드는 둘다 한번 변수에 설정한 값은 다시 재설정을 할수가 없습니다. main() { const String name = "이순신"; final int age = 30; name = "춘향이"; // error age = 31; // error } const 와 final

skymin2.tistory.com

https://jong99.tistory.com/166

 

[Dart, Flutter] Const vs. Final (Const와 Final의 차이점)

Final VS Const Final과 Const는 둘 다 변경할 수 없는 속성을 뜻한다. void main() { const int myConst = 2; final int myFinal = 3; myConst = 4; // error 발생, Const 변수에는 값을 할당할 수 없다. myFinal = 6; // error 발생, Final

jong99.tistory.com

'흥미 > Dart' 카테고리의 다른 글

#6 Nullable Variables  (0) 2023.01.16
#4 Dynamic Type  (0) 2023.01.05
#3 변수 - The Var Keyword, 명시적 타입  (0) 2022.12.29
#2 Dart 실행 / main method, 세미콜론  (0) 2022.12.28
#1 Dart란?  (0) 2022.12.25
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/04   »
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
글 보관함