꾸준히 성장하는 개발자

[dart] dart 변수 본문

Dart

[dart] dart 변수

ahleum 2023. 1. 25. 18:50

변수를 만드는 방법

 

var, 타입 지정

void main() {
  var name = 'flutter';
  String name2 = 'dart';
  
  name='flutter2';
  
  print(name);
  print(name2);
    
}

함수나 메소드 내부에 지역변수를 선언할 때는 var를 사용

class에서 변수나 property를 선언할 때는 타입을 지정해 준다.

 

위처럼 작성했을 때는 업데이트가 가능하다.

단 처음 선언되어 있던 타입으로만 업데이트가 가능 string이었는데 int로  변경되진 않음

 

 

 

 

Dynamic 타입

//Dynamic 타입

void main() {
  var name;
  
  name='hello';
  name=12;
  
  print(name);
}

 

변수를 선언할 때 dynamic을 쓰거나 값을 지정하지 않으면 dynamic 타입을 가진다

여러 가지 타입을 가질 수 있는 변수이다.

 

위에서와 다르게 string으로 선언했다가 number로도 선언이 가능하다.

 

다양한 타입을 가질 수 있기 때문에 정말 꼭 필요할 때만 사용해야 한다!

 

 

 

 

 

 

Null safety

void main() {
  String name = 'dart';
  
  name=null;
                                   // 에러 발생 
}

null safety는 개발자가 null값을 참조할 수 없게 하는 것

 

만약 null 값을 참조해야 하는 경우에는 어떻게 해야 할까

아래처럼  ? 를 넣어주면서 null이 참조될 수 있음을 알려줘야 한다.

void main() {

  String? name = 'dart';
  
  name= null;

}

만약 ? 을 붙인 변수는 이 변수가 null인지 아닌지를 확인해야 한다.

 

 

 

 

 

 

final

void main() {
  final name='flutter';
  
  name='hello';     //에러 발생
 
}

var대신 final로 변수를 만들게 되면 이 변수는 수정할 수 없게 된다. (딱 한 번만 설정할 수 있음)
자바스크립트의 const랑 비슷하다.

 

 

 

 

late

void main() {
  late final String name;
  
 print(name);      // 에러 발생
}

late는 초기 데이터 없이 변수를 선언해 준다

API에 요청을 보내 값을 받으면서 그 값을 late 변수에 넣어 사용할 수 있다.

 

위처럼 아직 값이 들어가기 전에는 접근할 수 없다고 에러를 보여준다.

 

 

 

 

const

dart에서의 const는 javascript의 const와 다르다

dart에서 const는 complie-time constant를 만들어준다

const와 fianl의 가장 큰 차이점은 컴파일이 되는 시점에 그 값을 알 수 있는지 없는지의 차이다

void main() {
const name = "tom"; // 컴파일 시점에 바뀌지 않는 값
final username=fetchAPI(); // 컴파일 시점에 바뀌는 값
}

const : 컴파일 시점에 바뀌지 않는 값 (상수)
final   : 컴파일 시점에 바뀌는 값 (API에서 받아온 값, 사용자 입력값)