Hello World
void main() {
print("hello world");
}
- main 함수는 모든 Dart 프로그램의 Entry point
- 프로그램 실행 시 main 함수에 쓴 코드들이 호출 (없다면 실행 불가)
- 세미콜론(;)이 필요 (일부로 안 쓸 때도 있어 formatter가 붙여주진 않음)
The Var Keyword
void main() {
var food1 = "pizza"; // 방법1
String food2 = "chicken"; // 방법2
food1 = "hamburger";
}
- var 키워드 or 타입을 직접 지정해 변수 선언
- var 키워드의 경우 Dart가 자동으로 타입을 추론
- 값의 업데이트는 같은 타입으로만 가능
- 함수나 메소드 내부에 지역 변수를 선언하는 경우 ~ var 키워드
- class에서 변수나 property를 선언하는 경우 ~ 타입을 직접 지정
Dynamic Type
void main() {
dynamic name1; // 방법1
var name2; // 방법2
name1 = 123;
name1 = true;
name1 = "yee";
if (name1 is String) {
print(name1.length);
}
}
- dynamic 키워드 or 초기화 없이 변수 선언
- dynamic 타입의 변수는 모든 타입으로 업데이트 가능
- 조건문으로 타입을 확인해줘야 해당 타입의 기능 사용 가능
- 변수의 타입을 알 수 없거나 꼭 필요한 경우에만 사용
Nullable Variables
void main() {
String? name = "hello";
name = null;
if (name != null) name.isNotEmpty; // 방법1
name?.isNotEmpty; // 방법2
}
- Dart 버전이 업데이트되면서 추가된 기능
- Dart는 null 값 참조를 예방하는 null safety 지원
- 타입 뒤에 ?를 붙여 변수가 null 값이 될 수도 있음을 명시
- 기본적으로 모든 변수는 non-nullable
- null 이 아닌 경우에만 실행하는 optional chaining 지원
Final Variables
void main() {
final name = "pizza";
name = "ham"; // 수정 불가
}
- 변수를 final로 선언하면 수정 불가 (JS const와 비슷)
Late Variables
void main() {
late final String name;
print(name); // name 변수에 접근 불가
}
- var 혹은 final 변수를 초기화 없이 선언 가능 + 값을 할당할 때까지 접근 불가
- 값을 나중에 할당하고 수정될 수 없도록 late final을 data fetching에 주로 사용
Constant Variables
void main() {
const name = "tom"; // 컴파일 시점에 바뀌지 않는 값
final username = fetchAPI(); // 컴파일 시점에 바뀌는 값
}
- Dart의 const는 compile-time-constant (JS의 const와 다름)
- 컴파일 이전에 이미 확정된 상수 값만 const로 선언 (하드 코딩)
- API로부터 받아오거나 사용자 입력 값은 final로 선언
본 내용은 노마드코더의 'Dart 시작하기'를 바탕으로 작성되었습니다
'Languages > Dart' 카테고리의 다른 글
[글또] JavaScript 개발자와 Dart 찍먹하기 (0) | 2023.02.11 |
---|---|
[노마드코더] #5 Classes (0) | 2023.01.12 |
[노마드코더] #4 Functions (0) | 2023.01.09 |
[노마드코더] #3 Data Types (0) | 2023.01.09 |
[노마드코더] #1 Introduction (0) | 2023.01.04 |