티스토리 뷰
● 도입
- 변수는 아래의 방법으로 만들 수 있다고 배웠다.
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가 아니라는 것을 명심)
● final
- 한 번 정의된(할당된) 변수를 수정할 수 없게 만들려면 변수 선언 키워드를 final로 설정하면 된다.
- final이 붙으면 딱 한 번만 값을 할당할 수 있다.
void main() {
final name = "garden";
name = "park";
}
- var 대신 final 키워드로 변수를 만들면 해당 변수는 수정할 수 없게 된다.
- final은 JS, TS의 const 키워드와 동일하다.
- 필수는 아니지만 아래와 같이 데이터 타입을 구체적으로 명시해 줄 수도 있다.(어차피 컴파일러가 알아서 타입을 추론)
● final과 const
- 개인적으로 궁금해서 찾아본 내용이다.
1. 공통점
- final과 const 모두 한 번 값을 대입하면 변경할 수 없다.
2. 차이점
final
- final은 실행중에(런타임 시에) 값이 결정된다.(런타임 시에 결정되는 값을 상수로 설정)
- final은 final이 들어있는 해당 파일이 실행될 때 해당 위치에서 값이 결정된다.
const
- const는 컴파일 시에 값이 결정된다.(컴파일 타임에 상수를 설정)
- const는 const가 들어있는 파일을 컴파일할 때(기계어로 번역될 때) 값이 결정된다.
※ 정리 : final은 실행 중 값이 결정되지만 const는 컴파일 시 값이 결정된다.
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
- OS
- MySQL
- API
- 빅데이터
- db
- 코테
- Advanced Stream
- 프로세스
- MongoDB
- Java8
- jpa
- nosql
- 메모리
- Phaser
- 빅데이터 분석기사
- DART
- Stream
- 프로그래머스
- java
- git
- 코딩테스트
- spring
- Phaser3
- 운영체제
- 자료구조
- 알고리즘
- SQL
- SpringBoot
- Spring Boot
- node.js
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |