TIL: Dart | [노마드코더] Dart 시작하기 - 221222

Lumpen·2022년 12월 20일
0

Dart

목록 보기
14/20

main() 함수가 있어야한다
dart는 세미콜론이 필수 (자동완성 없음) - 생략하는 경우가 있다

변수

var 키워드로 변수를 선언하면 타입 추론을 한다
한 번 사용된 변수는 해당 타입만 들어가야 함

dart 스타일 가이드

함수나 메소드 내부에 지역변수를 선언 시 var를 사용하고
Class 내부에서 프로퍼티를 선언할 때는 타입을 지정한다

dynamic

any 같은 type 이지만 조금 다르다
조건문 안에서 타입이 확정되는 순간 부터
해당 타입에서 사용 가능한 모든 것을 자동완성 해준다
if (변수 is String) {} 으로 타입 확인

null safety

dart는 개발자가 null 데이터를 참조할 수 없다
컴파일 시점에 null 이 될 수 있음을 알려준다
다트에서는 어떤 데이터가 null 이 될 수 있음을 명확히 해야한다

void main() {
	String? name = 'hi';
    name = null; // type Null
}

final

final 로 변수를 생성하면 상수처럼 사용할 수 있다
자바스크립트의 const와 같다

final String name = 'final'

late

final 이나 var 앞에 선언하여 초기 데이터 없이 변수를 선언할 수 있도록 한다
data fetching 등을 할 때 유용하다

const

자바스크립트의 const와는 다르다
compile-time constant: 컴파일 타임에 평가되는 상수 (컴파일 타임에 값이 있어야 함)
-> 비동기를 담을 수 없는 상수

자료형

String, bool, int, double 등이 있다
하지만 모든 자료형은 객체로 이루어져 있다
이것이 다트가 완전한 객체지향으로 불리는 이유
num 은 int와 double의 부모 클래스이지만 자주 사용되지 않음

List<int> numbers = [1, 2, 3,]; // class
var numbers = [1, 2, 3, ]; // function

다트는 collection if, collection for 를 지원한다

collection if

collection 자료형에 있을 수도, 없을 수도 있는 값을 만들 수 있다

var numbers = [1, 2, if (true) 3], // if 조건에 만족하면 numbers에 add(3) 아니면 [1, 2]

collection for

var old = ['a', 'b'];
var new = [for (var alpha in old) 'old $alpha','c', 'd'];
// ['old a', 'old b', 'c', 'd'];

String Interpolation

$ 를 사용해서 문자열에 변수를 넣을 수 있는데
자바스크립트 처럼 백틱을 사용하는 것이 아니라 그냥 문자열에서 사용할 수 있음

문자열에 값이나 표현식을 넣으려면
${} 로 사용한다

Map

파이썬의 dictionary, 자바스크립트의의 객체 같은 자료형
Map<String, Object>라고 작성하면 형식을 갖는다
다트는 Object로 부터 모든 자료형이 나오기 때문에
타입스크립트의 any 와 같다고 보면 된다

key: value 형식으로 key와 value에 모든 자료형을 사용 가능하다

void main() {
	var map = {1: 'map',}; // 타입 추론
    Map<String, Object> map = {'1': 'any', };
}

데이터의 분류가 명확하다면 class를 사용하는 편이 좋다

Set

 void main() {
 	var numbers = {1, 2, 3};
    Set<int> numbers = {4, 5, 6};
 }

list와 같지만 모든 요소가 유니크하다
값을 추가해도 이미 존재하는 값이라면 무시된다

profile
떠돌이 생활을 하는. 실업자는 아니지만, 부랑 생활을 하는

0개의 댓글