Post

[Dart] 1.Variables

dart

Dart의 Variables (변수)

Main 함수

1
2
3
void main() {
print('Hello World!');
}
  • 모든 Dart 프로그램의 시작점이다.
  • main 함수에서 코드를 호출한다.
  • main 함수가 없으면 코드를 실행할 수 없다.
  • Dart는 문장 끝에 세미콜론(;)이 필요하다.

변수 선언

1
var name = 'apple';
  • 타입을 구체적으로 적을 필요 없다. Dart가 알아서 타입을 추측한다.
  • 업데이트할 때는 같은 자료형으로 해야 한다.
  • 함수나 메소드 내부에서 지역변수로 사용한다.
1
String name = 'apple';
  • 자료형을 지정해서 선언하는 것도 가능하다.
  • 클래스에서 변수나 프로퍼티를 선언할 때 자주 사용된다.

Dynamic (동적) 타입

1
2
var name;
dynamic name;
  • 변수의 타입을 모를 때, 예를 들어 JSON 데이터를 다룰 때 사용한다.
  • 선언할 때 값을 지정하지 않으면 dynamic 타입이 되고, dynamic으로 선언하는 것도 가능하다.
1
2
3
4
var name;
name = 8;
name = 'apple';
name = true; // 이렇게 타입 변경도 가능하다.
  • 조건문 블록 안에서 다양한 메소드를 활용할 수 있다.
1
2
3
4
5
6
7
dynamic name;
if(name is String){
name.split(...)
}
if(name is int){
name.isEven
}
  • dynamic 타입은 불가피할 때 말고는 되도록 사용하지 않는 것이 좋다.

Nullable Variables

1
2
String? name = 'apple'; // 타입 뒤에 ?를 붙여서 표시한다.
name = null;
  • 자료형의 메소드를 쓰려면 조건문으로 null을 제외해줘야 한다.
1
2
3
4
5
6
7
8
String? name = 'apple';
name = null;
if (name != null){
name.isNotEmpty; // 조건문 없이 메소드를 쓰면 컴파일 에러가 난다.
}
// 대신
name?.isNotEmpty
// 로 사용할 수 있다.

Final Variables

1
2
3
4
5
6
7
8
9
void main() {
var name = 'apple';
name = 'pear'; // 가능
final name = 'apple'; // 한번 사과는 영원한 사과
}

void main() {
final String name = 'apple'; // 타입 추가도 가능하지만 불필요하다.
}

Late Variables

1
2
3
4
5
void main(){
late final String name;
// do something, go to api
name = 'apple';
}
  • latevar이나 final 앞에 붙인다.
  • 초기 데이터 없이 변수를 선언할 수 있게 해준다.
  • 클래스 내의 인스턴스 변수가 final이면 만들면서 바로 할당해야 하고, late final이면 만들고 난 후에 할당해도 된다.
  • 값을 넣기 전에는 접근하지 않아야 함을 알려주어 null-safety를 보장한다.
  • Flutter에서 데이터 페칭을 할 때 유용하다.

Constant Variables

1
const max_allowed_price = 999999;
  • Dart의 const는 컴파일 타임 상수를 의미한다.
  • 수정될 수 없는 것은 final과 동일하다.
  • 컴파일 타임에 알고 있는 값이어야 한다. (API로부터 오거나, 사용자로부터 입력받는 값이 아니라, 앱스토어에 앱이 올라갈 때 이미 알고 있는 값이어야 한다.)
This post is licensed under CC BY 4.0 by the author.