JiSoo's Devlog
[Dart 시작하기] Section 1 본문
Dart는 두 개의 컴파일러를 가지고 있다
Dart Web(dart로 쓴 코드를 JavaScript로 변환) / Dart Native(dart 코드를 여러 CPU의 아키텍처에 맞게 변환)
JIT(Just-It-Time) 컴파일 : dart VM으로 내가 쓴 코드의 결과를 바로 화면에 보여준다
AOT(Ahead-Of-Time) 컴파일 : 컴파일을 먼저 하고 그 결과인 바이너리 배포
-> 빠른 피드백을 원하면서도 최종 앱은 컴파일되어서 빨라야 한다
null safety는 안전한 프로그램을 빌드할 때 중요
dart언어를 수정해 flutter를 더 빠르게 할 수 있다
flutter에서 모든 건 class이다
main 함수는 모든 Dart 프로그램의 Entry point 이기 때문에 아주 중요
반드시 main 함수를 쓰는데 main 함수에서 우리가 쓴 코드가 호출되기 때문이다
꼭 세미콜론을 써줘야 한다!!!
dart는 auto formatter 기능이 없어서 직접 써줘야 한다! -> 일부러 세미콜론을 안 쓸 때가 있기 때문에
변수 만들기
1. var 사용
void main(){
var name = '지수';
}
변수의 타입을 구체화할 필요가 없다
변수는 수정할 수 있는데 본래 타입과 일치해야 한다
2. 명시적으로 변수 타입 지정
void main(){
String name = '지수';
name = '지숭';
}
관습적으로 함수나 메서드 내부에 지역 변수를 선언할 때는 var 사용
class에서 변수나 property를 선언할 때는 타입 지정
어떤 경우든 변수는 업데이트할 수 있다
dynamic은 여러 가지 타입을 가질 수 있는 변수에 쓰는 키워드
void main(){
var name;
name = 'jisoo';
name = 12;
name = true;
}
이게 가능한 이유는 변수의 타입이 dynamic이기 때문
변수가 어떤 타입일지 알기 어려운 경우가 있기 때문에 사용!
void main(){
dynamic name;
name = 'jisoo';
name = 12;
name = true;
}
이렇게 dynamic이라고 써줘도 된다
dynamic을 이용하면 dart가 데이터 타입을 확인할 수 있도록 도와준다
void main(){
dynamic name;
if(name is String){
}
if(name is Int){
}
}
dynamic은 정말 필요할 때만 써야 한다
null safety는 개발자가 null 값을 참조할 수 없도록 하는 것
어떤 변수, 혹은 데이터가 null이 될 수 있음을 명시하는 것을 의미
만약 null값을 참조하면 런타임 에러 뜬다
null은 부재를 의미
dart에서는 어떤 변수가 null이 될 수 있음을 정확히 표시해야 한다
void main(){
String? jisoo = 'jisoo';
jisoo = null;
}
이렇게 ?물음표 를 사용하면 jisoo가 String일 수도 null일 수도 있다
dart의 null safety는 어떤 변수나 데이터가 null이 될 수 있음을 명시하는 것을 말한다
기본적으로 모든 변수는 non-nullable
void main(){
String? jisoo = 'jisoo';
jisoo = null;
jisoo?.isNotEmpty;
}
jisoo?.isNotEmpty 는 null인지 확인 후 연산 진행 -> 단축 문법
jisoo가 널이 아니라면 isNotEmpty 속성을 달라고 요청
한 번 정의된 변수를 수정할 수 없게 만들려면 final을 사용 -> 수정 X
void main(){
final name = 'jisoo';
}
void main(){
final String name = 'jisoo'; // 더 구체적으로 해주려면
}
late는 final이나 var 앞에 붙여줄 수 있는 수식어로 초기 데이터 없이 변수를 선언하게 한다
void main(){
late final String name;
name = 'jisoo';
}
변수를 먼저 만들고 데이터를 나중에 넣을 수 있게 해 준다
late는 값을 넣기 전에는 접근하지 않아야 한다는 것을 알려주기 때문에 실수를 막아준다
javascript나 typescript의 const는 dart의 final과 비슷하다
dart에서 const는 compile-time constant를 만들어 준다
const는 컴파일할 때 알고 있는 값을 사용해야 하는데 만약 어떤 값인지 모르고 그 값이 API로부터 오거나 사용자가 화면에서 입력해야 하는 값이라면 const가 아닌 final이나 var가 되어야 한다
const는 컴파일 시점에 바뀌지 않는 값
final은 컴파일 시점에 바뀌는 값으로 사용자가 앱을 실행하면서 변수를 만들 수 있다(API에서 받아온 값, 사용자 입력값
'App > Dart' 카테고리의 다른 글
[Dart 시작하기] Section 4 (1) | 2024.01.28 |
---|---|
[Dart 시작하기] Section 3 (0) | 2024.01.24 |
[Dart 시작하기] Section 2 (0) | 2024.01.16 |