[ Dart ] 01. 변수/상수

duck-ach·2024년 10월 11일
0

Dart

목록 보기
2/7

🦋 변수

Dart에서 변수를 선언할 때 3가지 방법으로 할 수 있다.

var

주로 함수나 메소드 내에서 지역변수를 사용할 때 사용한다.

만약 var를 사용하여 문자열을 선언했다면,

var food = 'pasta';

아래에서 다른 데이터 타입의 변수를 해당 변수에 넣지 못한다.

var food = 'pasta';
food = 11; // error
food = true; // error

Type

주로 Class 내 지역변수나 properties 를 선언할 때 사용한다.

문법이 Java랑 되게 비슷하다는 생각을 했다.
해당 문법도 String이라고 지정해주었기 때문에 다른 데이터 타입은 변수에 할당되지 않고 에러가난다.

String food = 'pasta';
food = 11; // error
food = true; // error

var 를 사용하던 구체적인 타입을 선언해서 사용하던 컴파일러가 데이터 타입을 인식하는 것은 똑같다.

Dynamic

주로 데이터 타입을 알 수 없거나, flutter에서 json이랑 사용할 때 동적으로 데이터 타입 변환이 필요한 경우, 또는 데이터 타입의 확인이 필요할 경우 사용한다.

보통은 Dynamic 변수를 선언을 많이 사용하지 않게 권장하고 있지만, 특정의 경우에는 사용할 수 있도록 Dart에서 지원하고 있다고 한다.

변수를 var로 선언한 후, 초기화 하지않고 그 아래에서 변수 값을 할당한다면 변수의 타입이 Dynamic으로 지정되기 때문에, 아래처럼 여러 데이터타입의 변수 선언이 다 가능하다.

var food;
food = 'fasta';
food = 11;
food = true;

또는 dynamic으로 선언할 수 있다.

dynamic food;
food = 'fasta';
food = 11;
food = true;

Dynamic 변수의 또 다른 특징은 Dynamic 변수를 선언한 후, String 값을 할당했더라도 타입을 특정하지 못하기 때문에 관련 함수가 조회되지 않는다.

var food;
food = 'fasta';

하지만 Dynamic 변수에 String 이라면, int 라면 등등 조건을 달아준 후 그 해당 단락 내에서는 해당 데이터 타입의 함수를 사용 할 수 있게 된다.

🦋 상수

값이 변하는 변수와 다르게 값이 변하지 않으면 안되는 상수 선언은 간단하다.

const

const는 compile 단계부터 값을 알고 있는 것이다.

  • API를 통해 받아오는 값 X
  • 사용자가 입력하는 값 X
const userId = 'duck-ach';

final

동적인 초기화를 한 후 값이 변하지 않는 상수를 유지하고 싶다면 final 을 이용하여 선언해주면 된다.

final userName = 'duck';

만약 밑에서 값을 바꾸려고 하면 에러가 난다.

final userName = 'duck';
userName = 'ach'; // error

🦋 수식어

late

late 수식어는 주로 변수나 상수 앞에 붙여준다.
먼저 변수/상수 앞에 선언해 놓고, api를 통해 나중에 값을 할당하거나 다른 작업을 한 후 값을 할당 할 경우 사용한다.

late final String name;

사용을 할때에는 값을 꼭 할당하고 사용을 할 수 있다.

late final String name;
print(name); // error
late final String name;
name = 'duck';
print(name); // duck

결론 정리

  • dart는 기본적으로 var 선언을 권장하며, class나 property 를 작성할 때는 Type 선언을 권장한다.

  • 변수를 단 한번 할당한 후 값을 바꾸고 싶지 않다면 final 선언을 하면된다.

  • dynamic 선언의 경우 가장 조심스럽게 사용하도록 권장된다. 타입에 대해 조건을 걸어주어야 그 타입에 대한 함수를 사용 할 수 있다.

  • const 는 이미 값을 알고있고, 타입을 알고 있는 경우 사용한다. 컴파일단계부터 이미 값을 다 알고 실행되기 때문에 API를 통해 값을 받아오거나 사용자가 입력한 값을 할당할 수는 없다.

  • late 는 변수 선언 후 나중에 값을 할당할 때 사용된다. 정의 되지 않은 late 변수는 사용할 수 없다.

profile
자몽 허니 블랙티와 아메리카노 사이 그 어딘가

0개의 댓글