컴퓨터 비전공자 Product Manager의 프로그래밍 공부
노마드 코더(Nomad Coders) 강의 필기 노트 입니다.
강의 정보: Dart 시작하기 (https://nomadcoders.co/dart-for-beginners)
Variables (변수)
The Var Keyword (변수)
변수를 선언할때 Var를 사용하거나 넣어줄 데이터(ex: String)의 타입을 사용할 수도 있다.
var는 특정 데이터타입을 직접 정의하지 않아도 입력된 데이터를 기반으로 데이터 타입을 인식한다. 그리고 변수는 데이터 타입만 유지한다면 업데이트가 가능하다.
Dynamic Type
모든 타입의 변수를 다 가질 수 있는 변수 타입
어떤 타입일지 알 수 없을때 사용하는 것이 아니기 때문에, Dyanamic은 정말 필요할때만 사용하는게 좋다.
Nullable variables
Dart에서는 어떤 변수가 null이 될 수 있음을 정확히 표시해야 한다.
null safety는 어떤 변수, 혹은 데이터가 null이 될 수 있음을 명시하는 것을 말한다. 이렇게 하면 어떤 데이터가 null일 때 참조하지 않도록 Dart언어가 도와줄 것이다.
모든 변수는 non nullable이지만, 변수에 ? 를 붙여주면 null safety가 되어 null이 될 수 있음을 Dart가 알 수 있다.
Final Variables
한 번 정의된 변수를 수정할 수 없게 만드려면 변수를 final로 바꿔주면 된다.
혹은 final Var 나 final String으로 더 구체적으로 해줄 수 있다. 다른 언어의 const 와 동일해진다.
Late Variables
late 는 dart의 재밌고 훌륭한 기능이다. late는 final이나 var 앞에 붙여줄 수 있는 수식어이다.
late는 초기 데이터 없이 변수를 선언할 수 있게 해준다.
변수를 먼저 만들고 API를 호출한 뒤 받아서 데이터를 나중에 넣을 수 있게 해준다.
late final을 사용하면 한번만 사용할 수 있는 변수를 만들고 데이터는 잠시 후에 넣어주게 된다.
flutter 에서 API와 작업할때 많이 보게 될 것이다.
Constant Variables
javascript나 typescript의 const는 dart의 final과 유사하다.
dart에서 const는 compile-time constant를 만들어준다.
const는 compile-time에 알고 있는 값이어야 한다. 예를들어 API 키가 있다고 해보자. 그걸 여기 const에 넣어주면 이건 절대 바뀌지 않을 거고 컴파일이 될 때 그 값을 알고 있을 거다. 이건 하드 코딩된거다. 코드 안에 있는 거고 복사 붙여넣기 된거다.
하지만 만약에 API요청 같은걸 한다고 생각해보자. 이건 compile-time constant가 아니다. 컴파일러는 API 변수 값을 모른다. 왜냐하면 이건 API에서 받아와야 하는 값이기 때문이다. 이땐 const가 아닌 final이어야 한다.
const는 컴파일 할 때 알고 있는 값에 사용하는 거다. 앱스토어에 앱을 올리기 전에 알고 있는 값이란 거다. 그게 const가 하는 일이다.
어떤 값인지 모르고 그 값이 API로 부터 온다거나, User가 화면에서 입력해야 하는 값이라면 그것은 final이나 var가 되어야 할 것이다.
Recap (복습)
영상: https://nomadcoders.co/dart-for-beginners/lectures/4100https://nomadcoders.co/dart-for-beginners/lectures/4100
'PM 기술스터디' 카테고리의 다른 글
(Flutter Study) DART 언어 - Class.1 (1) | 2023.06.29 |
---|---|
(Flutter Study) DART 언어 - Functions (0) | 2023.06.28 |
(Flutter Study) Dart 언어 - DATA TYPES (10) | 2023.06.24 |
PM 기술 스터디 - 객체지향 프로그래밍(Object-Oriented Programming, OOP) (2) | 2023.05.31 |
PM스터디 - Flutter(플러터)와 DART(다트) (3) | 2023.05.25 |
댓글