1. #1.0 Hello World (03:36)
main 함수?
dart는 자동으로 main함수를 찾음. 다른언어도 대부분 그럼
print 함수.
dart는 자동으로 formatter이 ; 을 달아주지 않음.
모든 함수는 main에서, 세미콜론 필수 ~~~.
다른 언어들보단 c언어에 가까운 문법을 보여줄것 같은 느낌...
2. #1.1 The Var Keyword (03:07)
변수란 무엇인가?
변수 선언 방법?
var name = '홍길동';
변수 타입이 한번 정해지면 변수 타입이 유지되어야 함. 위의 경우에 name = 1 을 하게 되면 오류 발생.
명시적으로 변수 타입 지정할 수도 있음.
String name = '홍길동';
관습적으로 지역변수는 var
컴파일러가 어차피 알아들음.
dart에서 상수는?
3. #1.2 Dynamic Type (03:35)
dynamic : 여러가지 타입을 가질 수 있는 변수. 권장되진 않지만, 필요할 때가 있음.
void main() { // 이 경우는 오류 발생. var name = 'nico'; 로 하면서 변수 타입을 지정해버리는 것으로 보인다.
var name = 'nico';
name = 12;
name = true;
}
void main() {
var name;
name = 'nico';
name = 12;
name = true;
}
void main() {
dynamic name;
name = 'nico';
name = 12;
name = true;
}
Dart에서 dynamic의 경우 보호를 해주기 때문에,
변수형이 확인되지 않으면 해당 변수형의 함수를 자동완성 하지 않음.
void main() {
dynamic name;
if (name is String){
name.length
}
}
하지만, 위의 경우처럼 확인하게 되면 사용할 수 있게됨.
if 밖에서는 다시 확인해주는 과정이 필요하다.
하지만 그렇다 해도 권장되지는 않나보다...
4. #1.3 Nullable Variables (06:09)
dart의 null safety : 개발자가 null을 참조할 수 없도록 함
null 참조하면 에러
컴파일 전에 잡아내는게 이상적, 이를 null safety가 도와줌
dart는 어떤 변수가 null이 될 수 있는지 표시해야한다.
void main() {
String? nico = 'nico';
nico = null;
}
=> nico 변수가 String일수도, null일수도 있음
?을 붙여주지 않은 변수는 기본적으로 null이 들어올 수 없다.
아래 두 방법은 동일하게 동작함
1.
if (nico != null){
nico.isNotEmpty;
}
2.
nico?.isNotEmpty; //nico가 null이 아니라면, isNotEmpty 속성을 주어라
5. #1.4 Final Variables (02:08)
final : 상수 만들기
String, var 등으로 선언한 데이터는 이후에 수정이 가능함
final로 선언하면 이후에 값을 바꿀 수 없음. 이는 js의 const와 같음.
final name = 'nico';
final String name1 = 'nico1';
와 같이 선언할 수 있음.
6. #1.5 Late Variables (03:16)
Late Variables?
late는 final, var 앞에 붙일 수 있음.
초기 데이터 없이 변수를 선언할 수 있다.
void main() {
late final String name;
print(name); // late로 선언하여 값이 비어있기 때문에 사용 불가
name = 'nico'; // 위에서 late로 미루고 비워둔 값 선언
name = '12'; // final이기 때문에 변수 수정 불가
}
값을 모르지만 선언해야 할 때.
api로 작업할때 많이 쓰게 될 것.
다른사람 메모 복붙
===================
late는 초기 데이터 없이 선언을 할 수 있게 해준다.
```dart
void main(){
late final String name;
name = "jisoung";
// 에러!
name = 16
}
```
late 변수는 값을 할당되기 전에는 접근할 수 없다.
late 변수는 data fetching을 할 때 매우 유용하게 사용된다.
왜냐하면 fianl 키워드를 혼자 사용하면 바로 선언을 해야하지만 late 키워드를 사용한다면 선언이 아닌 할당을 하더라도 그 변수의 수정을 막을 수 있기 때문이다.
7. #1.6 Constant Variables (03:21)
dart의 const? js와 다름.
compile-time constant를 만들어줌.
final과 비슷하게 동작. 하지만, 추가로 compile time에 알고있는 값이어야 함.
const는 이미 알고 미리 올려놓을 값.?
앱을 앱스토어에 올리기 전에 알고있는 값..
앱에서 활용할 상수...
8. #1.7 Recap (07:32)
변수 복습
변수 선언방법
var name = 'lalala';
int i = 12;
타입이 유지된다면 값을 바꿀 수 있음.
dynamic : 변수형이 막 바뀔 수 있음. 사용할때 변수형을 확인하고 사용할 필요가 있으며, 그래도 권장되진 않음.
final : 값을 재할당할 수 없음.런타임 중에 만들어질 수 있다. 사용자가 앱 실행하며 변수 생성 가능
const : 우리가 컴파일 전에 알고있는 값을 알고있는 값 선언. final과 유사해보이지만 다름
null safety : null 참조 방지, 기본적으로 선언하는 변수는 null 불가.
null 가능할 수도 있게 하려면 String? name; 과 같은 방식으로 선언
late : final, var, String과 같은 변수형 앞에 붙는 수식어. 아직 뭔 값이 올지 모르니, 나중에 값을 선언할 것임을 말함
api로 값을 가져오게 될 때 효율적이다.
'공부 > Dart' 카테고리의 다른 글
Dart 시작하기 #4 CLASSES (0) | 2023.02.01 |
---|---|
Dart 시작하기 #3 FUNCTIONS (0) | 2023.01.31 |
Dart 시작하기 #2 DATA TYPES (0) | 2023.01.31 |
Dart 시작하기 #0 INTRODUTION (0) | 2023.01.20 |