본문 바로가기
Language/Dart

Variables

by mansoorrr 2023. 12. 4.

1.  변수선언

  • dart만 실행하기 위해 dartpad.dev를 이용한다.
  • dart는 main을 찾아 실행한다.
  • ';' (세미콜론)이 꼭 붙어있어야 한다
  • 실제로 실행하는 코드는 꼭 main함수 안에 있어야 함
void main() {
  print("hello world");
}

 

  • 변수는 기본적으로 var를 통해 명시한다.
    • 함수나 메서드 내부에 지역변수를 선언할 때 주로 사용
  • 명시적으로 레퍼런스를 통해(타입으로 지정) 변수를 지정할수도 있다.
    • class나 property를 선언할때 주로 사용
  • 변수의 타입을 지정하지 않아도 자동으로 레퍼런스를 생성한다.
  • 변수를 수정할때는 지정한 타입과 동일한 타입으로 수정해야 한다.
void main() {

	#기본적인 변수 선언
    var name = "mansooor"
    
    #타입명시하여 변수 선언
    String name = "mansoor"
    
    #아래와 같이 변수 수정 불가(타입변경됨)
    name = 1 (x)
    
    #변수 수정 가능(타입일치)
    name = "roosnam"
    
}

 

2. Dynamic

  • 여러가지 타입을 가질수 있는 변수에 쓰는 키워드
  • 먼저 선언하고 값을 넣지 않으면 dynamic타입이 됨
void main() {
	var name; #변수 이름만 명시: dynamic type이 됨
    name = "mansoor" #string가능
    name = 12 #int도 가능
    name = true #bool도 가능
}

 

3. Final

  • 한번 정의된 변수를 변경하지 못하게 하기 위해 사용
  • js, ts의 const와 비슷

 

4. Late

  • 초기 데이터 없이 변수를 선언할 수 있게 해줌
  • API등 나중에 데이터를 받아올때 사용됨
  • 값을 넣기 전에는 접근 못함

late 변수에 아무것도 넣지 않았을때
late 변수 할당 후 값 추가

 

5. Constant

  • javascript나 typescript의 const와는 다름
  • compile-time constant를 만들어줌
    •  final 처럼 한번 명시하면 수정이 안됌
    • 컴파일할때 알고있는 값에 사용
    • 쉽게 말하면 사용자가 입력해야 하는 값이나, API에서 받아와야 하는 값에는 사용하지 못함
    • 정확하게 알고 있는 값에만 사용

6. Nullable Variables

  • ? 를 사용하여 null 값을 허용
  • 이를 사용해 예외를 방지가능
  • 타입을 명시하면 해당 타입의 객체만 할당 가능(모든 변수는 기본적으로 non-nullable)
void main() {
	String name = "mansorrr"; #변수 생성시 String으로 지정
    name = null; #변수를 null로 변경
}

error가 나타나는 모습

 

void main() {
  String? name = "minsoor"; #?를 사용하여 변수 지정
  name = null; #변수 업데이트
  print(name);
}

실행되는 모습

 

  • nullable 변수를 사용하면 null값을 처리하지 않은 상태로 실행가능
  • 이러면 error가 발생함
  • 따라서 null인지 아닌지 판별할 수 있도록 코드를 작성해야 함
void main() {
  String? name = "minsoor";
  name = null;
  if (name != null) {
    print("$name is not null");
  } else {
    print("name is null");
  }
}

null일 경우 명시한 결과

 

 

'Language > Dart' 카테고리의 다른 글

Class  (0) 2023.12.07
Functions  (2) 2023.12.06
Types  (2) 2023.12.06