Dart 기초 공부
Dart
Google에서 개발
객체지향 프로그래밍 언어
두 가지의 컴파일러(JIT, AOT)
강력한 타입 시스템
컴파일러
JIT(Just In Time)
코드 실행 시점에 컴파일 -> 빠른 개발/디버깅(Hot-Reload / Hot-Restart 구현 시 사용)
AOT(Ahead Of Time)
미리 컴파일 -> 코드 내부 보호, 높은 실행 속도, 여러 플랫폼에서 실행하도록 바이너리 파일 생성
다트 사용
Dart Pad(Web Browser)
Android Studio or IntelliJ
VS Code
Dart에서 변수는 선언과 동시에 타입을 정해 선언을 한다.
기본형 / 자료형(List, Set, Map) / 확장형(Object, Enum, Future, Stream)
var(타입 고정) / Dynamic(타입이 언제든 변환)
const(컴파일 시점에 상수 처리) / final(프로그램 진행 중에 상수 처리)
Dart 연산자
Null Safety => Null 값에 대한 안정성을 위해 도입
Nullable Type(int?)
Null을 허용하는 타입
변수 뒤에 ? 을 붙여 활용
Non-nullable Type(int!)
Null을 비허용하는 타입
변수 뒤에 !을 붙여 활용
해당 값이 null인 경우 에러 발생
변수 선언
String str1 = 'str1';
bool bool1 = true;
int num1 = 2;
int? num1;
int num2 = 10;
print((num1 ?? 5) + num2)
// 15
num1 = 5;
print(num1! + num2)
// 15
??의 경우, 앞의 값이 null이면 뒷값인 5를 num1에 대입하게 된다.
클래스
객체를 만들기 위한 템플릿
필드 / 메서드 - 클래스 내부 선언된 데이터 / 함수
생성자 - 클래스 인스턴스 생성 시 사용되는 코드
Default / Named / Redirecting / Const / Factory Constructors
기본 / 임의 / 초기값 / 상수 / 매번 새로운 인스턴스를 만들지 않는 생성자
기본 생성자
void main() {
Point point = Point();
print(point); // Instance of 'Point'
}
class Point {
double? x;
double? y;
}
임의 생성자
void main() {
Point point = Point(2, 2);
print(point); // Instance of 'Point'
print(point.x); // 2
Point aPoint = Point(3, 3);
Point bPoint = Point(1, 10);
print(aPoint.y); // 3
}
class Point {
double? x;
double? y;
Point(this.x, this.y);
}