플러터의 언어 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 |