newChobo
Published 2023. 1. 20. 15:04
Dart 시작하기 #1 VARIABLES 공부/Dart

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로 작업할때 많이 쓰게 될 것.

 

다른사람 메모 복붙

===================

jangjisoung04051 month ago
late는 final 혹은 var 앞에 붙이는 수식어다.
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
profile

newChobo

@새로운뉴비

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!