frontend/mobile

[dart] Variables 정리

김포레스트 2023. 9. 21. 13:56

js 에서는 자료형에 상관없이 var, let, const를 사용했었고

그마저도 const 위주로 사용하기를 권장했다. 

 

1. var와 자료형 지정

dart 에서는 var를 많이 사용하는데, 대신 자료형을 지정해줘야 할 때에는 String, int와 같은 자료형 선언을 함께 해준다고 한다. 

 

String name = "이름을 입력하자";
int number = 3;

 

그리고 선언한 자료형에 해당하지 않는 변수가 할당되면 에러를 뱉어낸다.

String name = 3;   << 이런 친구는 있을 수 없는 것.

 

보통 전역으로 할당 하는 경우에는 자료형을 직접 선언 해주고,

메소드나 함수 내에서 활용하는 변수의 경우 var를 사용하는데,

관습적인 부분이라고 함.

 

 

2. dynamic

데이터 형식을 알 수 없을 때 사용함. 근데, 조금 위험하니까 필요할 때만 써야 한다. 

처음에 String 형식의 데이터를 넣어줬더라도 추후에 숫자형 자료로 덮어씌운다던지 할 수 있기 때문에 위험한 것으로 간주한다. 사실 js에서는 이런 상황을 위험하다고 간주한 적이 없어서 띠용 스럽긴 하지만 그렇다고 하니 그런줄 알면 된다.

뭐 얼추 위험할 것같기도 하다.

dynamic variables = '다이나믹한 변수!!';

요렇게 쓴다.

 

 

3. final, const

인강에서는 final과 const를 나누어 설명했지만 묶어서 이해하는게 편할 것 같다.

js 에서의 const는 재선언이 불가능한 변수 선언방식이었다.

그런데 dart에서는 js 에서의 const 역할을 final이 한다. 

그리고, dart에서의 const는 compile-time constant 라고 해서, 컴파일 단계(앱 배포 이전단계)에서 꼭!!!! 할당받아야만 하는 변수를 선언할 때 사용한다고 한다. 예를 들면 api key 같은것. 

 

** 정리 **

final : 재선언 불가능한 변수

const : 컴파일 단계에서 무조건 알고 있어야만 하는 변수

 

 

4. late

late는 변수 선언 이전에 붙여주는 명령어이다. 

late가 붙으면 초기데이터를 할당하지 않고도 변수 선언이 가능하다.

late String name;
late int number;
late dynamic variables;

요렇게 쓴다.

 

 

5. null safty

우리가 서버놈들에게서 데이터를 받아올 때, 언제나 꽉꽉 들어차있는 데이터를 받아올 수는 없다. 때에 따라서 null값을 받아와야 할 경우가 있을 수도 있다. 보통은 null을 참조하지 않는 것이 좋지만.....

어쨌든 혹시모를 null값을 참조하는 일을 방지하기 위해서 dart에는 null safty라는 기능이 내장되어있다고 보면 된다.

 

그런데, 아까말했듯이 null값을 받아 올 수도 있는 경우에는 이러한 null safty 기능을 무력화 시킬 수 있다.

String? name = "null이 올 수도 있음";

요렇게 말이다. 물음표를 쓰면 null 값이거나 아니거나 관계 없이 무조건 할당된 값을 참조하게 된다.

 

 

6. void main() {}

dart를 사용 하려면, 가장 기본적인 함수 main 을 사용해야 한다.

얘가 약간..... js class 문법에서 structure 같은 느낌 같아 보인다.

 

뭐 어쨌든, dart를 쓰려면 void main() {} 없이는 사용 할 수 없고,

다른 함수들을 사용하고 싶을 때에는 main 함수 내에서 실행 해주면 된다. 

void main() {
  hello();
}


void hello() {
  
  print('안녕안녕! 즐거운 dart 연습!!!!');
  
}