Dart
구글에서 만든 객체 지향 언어
크로스오버 플랫폼 SDK 인 Flutter 를 만들기 위한 언어이다.
UI에 최적인 언어
dart 는 2개의 컴파일러를 가지고 있다.
- dart native : 여러 cpu의 아키텍쳐에 맞게 변환
- dart web : dart -> js 변환해주는 컴파일러
JIT (Just In Time)
dart VM(가상머신) 으로 코드의 결과를 바로 화면에 보여주는 것 - 개발중일 때만 해당, 앱 배포 시 사용되지 않고 AOT를 사용
가상 머신으로 돌아가므로 조금 느린 대신 결과를 바로 확인 가능
AOT (Ahead Of Time)
컴파일을 먼저하고 그 결과인 바이너리(기계어)를 배포하는 것을 의미 - 배포 시 해당
가상 머신이 아닌 앱이 빠르게 구동
null safety
안전한 프로그램을 빌드할 때 중요한 개념,
프로그램에서 null 을 만나면 심각한 에러를 발생해내는데 이에 안전하다는 것.
설치할 필요없는 IDE
위의 온라인에서 진행해도 되지만 나같은 경우는 기왕하는거 깔자는 마음으로
brew install flutter
깔아버렸다. flutter 를 깔면 dart 도 따라온다길래 실행했고 정상적으로 작동했다.
추가로 vscode 의 flutter 확장 프로그램도 다운 받았다.
전에 java 와 c# 을 했던 경험이 있어서 dart 는 그나마 좀 접근이 쉬울 것 같다. (안본지 좀 오래라서 걱정이 되긴 하지만)
main( )
Entry point
main 함수에서 쓴 코드가 노출되기 때문에 꼭 써줘야 한다.
즉 dart 는 자동적으로 main 함수를 찾게 되어 있다.
print() 함수는 출력하기 위한 함수고!
세미콜론을 꼭 끝에 써줘야 한다. (편-안)
변수
값을 변경할 수 있는 변수 선언
1. var 키워드 : 타입을 지정하지 않고 값을 넣어서 타입 추론을 시행, 같은 타입이 아닌 경우 에러
2. 명시적으로 타입을 지정해주기
타입 변수명 = 값;
- var 는, 함수나 메서드 내부에 지역 변수를 선언할 때 사용해준다.
- class나 변수, property 를 선언해줄 땐 명시적으로 타입을 써준다.
값을 변경할 수 없는 변수 선언
final 키워드를 사용하여 변수를 선언해준다. (자바스크립트의 const 와 같다)
dynamic ?
여러가지 타입을 가질 수 있는 변수에 쓰는 키워드 ... 타입스크립트의 any 같은 것
var 를 써주면서 값을 초기화를 해주지 않으면 자동으로 지정되는 타입이기도 함
다만 가급적 사용하지 않는 것이 좋다. (타입스크립트에서 any를 지양하는 것처럼)
is ?
is 는 타입을 확인하는 프로퍼티이다.
변수명 is 타입명 => return bool
bool 타입(true/false) 로 반환한다.
보통 dynamic 으로 데이터 타입을 검사하여 사용해준다.
null safety -> nullable
개발자가 null 값을 참조할 수 없도록 하는 것
왜냐? null 을 만나면 런타임 에러가 발생하는데, 앱에서 런타임 에러라는 것은 앱을 사용할 수 없는 심각한 에러이다.
컴파일 전에 해당 에러를 잡아줘야하는데, null 을 참조하게 될 때도 분명 생긴다.
dart 에선 이를 위해서 어떤 변수가 null이 될 수 있음을 표기해주는 방식을 사용한다.
타입뒤에 ? 를 사용하여 null이 될 수도 있음을 나타내준다. (nullable)
void main() {
String? name = 'Kim';
name = null;
// ...
if(name != null) {
var result = name.isNotEmpty;
}
}
nullable 의 경우, 해당 기능을 사용한 변수에 접근하고자 할 땐 조건문으로 위처럼 null 이 아닐 때를 꼭 써주고 활용해줘야 에러가 안난다.
또는 아래처럼 변수 뒤에 ? 를 써줘서 표현해줘야 한다.
void main() {
String? name = 'Kim';
name = null;
// ...
var result = name?.isNotEmpty;
}
late 란?
final이나 var 키워드를 사용하여 변수를 선언해줄 때 앞에 덧붙여주는 키워드로
초기 데이터 없이 변수를 선언할 수 있게 해준다.
'App Study > Dart & Flutter' 카테고리의 다른 글
노마드코더 Dart Begginer - 4 (0) | 2023.06.07 |
---|---|
노마드코더 Dart Beginner - 3 (0) | 2023.06.05 |
노마드코더 Dart Begginer - 2 (0) | 2023.06.04 |