본문 바로가기

Flutter

[Flutter] const, final, dynamic, var

플러터의 언어 Dart도 다른 언어들과 비슷하게 변수를 선언할 때 변수형 외에도 몇가지 키워드를 제공하고 있다.

아래에서 살펴보도록 하자.

 

1. Var

어떤 변수형이라도 받을 수 있지만 한번 설정하면 "변수형"을 바꿀 수 없다!

 

var boo = 123;
boo = '철수'; // 에러!
boo = 500; // OK!

var foo = '영희';
foo = 0.1; // 에러!!

 

2. dynamic

어떤 변수형이라도 받을 수 있고, 한번 설정해도 변경 가능하다!

dynamic boo = 123;
boo = '철수'; // OK!
boo = 500; // OK!

dynamic foo = '영희';
foo = 0.1; // OK!

 

3. const

최초 선언 시 어떠한 변수형으로도 사용이 가능하지만 선언 이후엔 값조차 변경할 수 없다.

const boo = 123;
boo = 567; // 에러!
boo = '철수'; // 에러!

const foo = '영희';
foo = 0.1; // 에러!

 

4. final

최초 선언 시 어떠한 변수형으로도 사용이 가능하지만 선언 이후엔 값조차 변경할 수 없다.

final boo = 123;
boo = 567; // 에러!
boo = '철수'; // 에러!

final foo = '영희';
foo = 0.1; // 에러!

 

5. final 과 const 차이

공통점은 값이 한번 대입되면 변경할 수 없다는 것이다. (중요하다)

 

차이점은

const: 상수(혹은 빌드/ 컴파일 당시 고정값) 만 대입할 수 있다.

final: 상수 / 변수 전부 대입 가능하다.

 

final은 어플리케이션이 동작중에 값이 정해지지만 

const는 빌드 / 컴파일 단계에서 값이 정해지기 때문에 당연히 변수를 대입하는 것은 불가능하다.

 

6. final , const with List,map

아래 코드를 돌려보면 final의 경우 collection 타입으로 선언했을 때 변경이 너무 잘된다.

하지만 const는 변경이 확고하게 안된다.

final foo = []; // 리스트 형으로 선언
foo.add(666); // 리스트에 666 항목을 추가함 OK!
foo[0] = 333; // 리스트의 0번째 항목의 값을 333으로 변경 OK!
foo.remove(333); // 리스트의 값중 333을 찾아 제거 OK!

const boo = []; // 리스트 형으로 선언
boo.add(666); // 에러!

'Flutter' 카테고리의 다른 글

[Flutter] 싱글톤 패턴에 대해서 알아보자!  (0) 2021.12.12
[PAKAGE] 유용한 PAKAGE 모음집  (0) 2021.11.30
[PAKAGE] Google_fonts  (0) 2021.11.30
[PAKAGE] 알아두면 좋을 pakage - jwt  (0) 2021.11.30
[Flutter] - IOS setting  (0) 2021.11.09