[Dart] 1.Variables

김례원·2024년 3월 3일

Dart

목록 보기
2/3
post-thumbnail

main 함수

  • 모든 Dart 프로그램의 Entry point이기 때문에 아주 중요!
  • 반드시 main 함수를 작성해야 함.
  • main 함수에서 내가 작성한 코드가 호출되기 때문
  • 세미콜론(;)은 꼭 붙여줘야 함.(dart에서는 일부러 세미콜론을 사용하지않을 때가 있으니 주의!)

Variables

■ 변수를 만드는 방법

1. var

void main() {
	var name = "리아";
    name = 1; // name의 타입은 String인데 1(int)를 넣으면 에러 발생
    name = "ria";
}
  • 변수를 수정할 땐 같은 타입으로 해줘야 함.

2. 명시적으로 타입 지정 (ex. String)

void main() {
	String name = "리아";
    name = "ria";
}

관습적으로

  • 함수나 메소드 내부에 지역 변수를 선언할 때는 var를 사용
  • class에서 변수나 property를 선언할 때는 타입을 지정

■ dynamic

  • 여러가지 타입을 가질 수 있는 변수에 쓰는 키워드
  • dynamic 사용을 추전하진 않지만 때때로 유용함(사용해야만 할 때도 있음)
  • 정말 써야할 때만 사용!!!
  • 변수를 선언할 때 dynamic을 쓰거나 값을 지정하지 않으면 dynamic 타입을 가짐
void main() {
  var name; // dynamic 변수
  name = "ria";
  name = 1;
  name = true;
}
void main() {
  dynamic name; // dynamic 변수
  name = "ria";
  name = 1;
  name = true;
}

dynamic을 사용하는 경우

  • 변수가 어떤 타입일지 알기 어려운 경우
    ex) flutter와 json을 함께 사용할 때
void main() {
  dynamic name;
  
  if (name is String) {
  	name. /* name. 까지 입력하면 String 타입관련 자동완성 메서드 목록이 나타남. 
    		 해당 블록 안에서는 name이 String이란 걸 알기 때문 */
  }
  
  // 여기서 name은 dynamic이기 때문에 타입을 체크해줘야 함
  
  if (name is int) {
  	name. // int 타입관련 자동오나성 메스드 목록이 나타남.
  }
}

■ Nullbale Variables

null safety

  • 개발자가 null 값을 참조할 수 없도록 함.
  • 코드에서 null 값을 참조하면 런타임 에러(사용자가 앱을 사용하는 중에 발생하는 에러) 발생.
  • 기본적으로 모든 변수는 non-nullable(null이 될 수 없음) 임.
  • '?'을 사용하면 해당 변수가 null이 될 수 있다는 걸 알게 함.
void main() {
	String**?** name = "ria";
    name = null;
    
    if (name !== null) { // 컴파일러가 name은 null 아님을 알 수 있음
    	name.isNotEmpty;
    }
    
    // 간단하게 작성하면 이와 같음
    name?.isNotEmpty;
}

■ Final Variables

  • 한 번 정의된 변수를 수정할 수 없게 만들기 위해 사용.
  • js/ts의 const와 같음
void main() {
	// 값을 변경할 수 있는 변수
	String name = "ria";
    name = "리아";
    
    // 값을 변경할 수 없는 변수
    final name = "ria";
    // 굳이 필요없지만 type을 추가 할 수 있음 (필수x)
    final String name = "ria";
    
}

■ Late variables

  • final이나 var 앞에 붙여줄 수 있는 수식어
  • 초기 데이터 없이 변수를 선언할 수 있게 해줌
  • 장점
    - 데이터가 없는 상태에서 해당 변수를 사용하려고 하면 Dart가 막아줌
void main() {
	// 변수를 만드는데 데이터가 없음(필요한 데이터가 아직 없음)
	late final String name; // 한번만 할당 할 수 있는 변수
    
    // API 요청하여 데이터를 받은 다음, 그 데이터를 변수에 넣음
    name = "ria";
}

■ Constant Variables (상수)

  • js/ts의 const와 다름. (js/ts의 const는 Dart의 final과 비슷)
  • Dart에서 const는 compile-time constant를 만들어 줌
  • const는 compile-time에 알고 있는 값이어야 함
    ex) max_allowed_price
void main() {
	final API = fetchApi(); // o
    const API = fetchApi(); // x 컴파일 할 때 알고 있는 값이 아님.
    						// 앱스토어에 올리기 전에 알고 있는 값이어야 함.
}
profile
분야를 가리지 않는 개발자

0개의 댓글