Dart 문법 정리

김석·2023년 4월 16일
0

Flutter

목록 보기
1/5

1. 기본 자료형

int, double, num, bool, String 존재.
자료형 int, double == num.

num is int 		(true)
num is double 	(true)
int is num		(true)
double is num	(true)

2. 집합 자료형

List, Set, Map 존재.
타입<요소 타입> 으로 선언.

List<int> numbers = [1, 2, 3];
Map<string, int> scores = {
  'a' : 1,
  'b' : 2
}

3. var, dynamic

var a = 3;
a = 'hello';
// 에러. a의 자료형이 int로 지정되기 때문.
dynamic a = 3;
a = 'hello';
// 가능. dynamic은 변수의 자료형 변경을 허용.

4. final, const

final과 const는 불변 상수. 차이점은 값이 정해지는 시점.

const: 컴파일 시점, 앱 빌드 시점에 값이 정해짐. (앱 내부에 박혀있는 상수)

final: 런타임 시점, 앱 실행시 정해짐. (DateTime.now 같이 실행 시점에 상수 값 정해짐)


5. static

클래스 내부에서 공유되는 변수. 해당 클래스의 모든 인스턴스는 해당 static 변수를 공유함.


6. 정수 나눗셈: ~/

55 ~/ 2 = 27

7. null safety

  1. dart에서는 예상치 못한 null에 대응함.
  2. Dart에서는 변수 선언 시 초기값을 주지 않으면 null로 초기화됨. 따라서 non-nullable 변수는 선언과 동시에 초기값을 주어야 함.
  3. 변수는 nullable과 non-nullable로 나뉨. 기본적으로 변수는 non-nullable이기 때문에 null값이 들어간다면 컴파일 에러가 남. nullable로 선언하기 위해서는 자료형 뒤에 ?를 붙임.
int a = 1;
a = null; // 컴파일 에러
int? a = 1;
a = null; // 가능
  1. var 타입은 c++ auto처럼 타입을 추론함. 타입 추론과 동시에 nullable인지 non-nullable인지도 추론함. 따라서 var? 라고 쓸 필요가 없고, 쓰면 에러남.
var a1 = 10;	// int + non-nullable
var a2 = null;	// dynamic + nullable
var a3;			// dynamic + nullable
var? a4 = null;	// 컴파일 에러
  1. dynamic 타입에서는 null safety는 의미 없다. dynamic으로 선언하는 것 자체가 nullable로 선언하는 것이기 때문.
  1. required은 함수 named parameter 설정할 때 non-nullable으로 지정하는 문법. 생성자의 named parameter에 requierd가 있다면 해당 인자를 무조건 넘겨 받아야 함.
  1. late는 class 내부 변수에 대해서, 그 변수를 non-nullable로 설정하고 싶은데 초기화 시키지 않는 경우, 나중에 값을 할당한다는 것을 명시해주는 의미로 붙임.

8. 함수 선언

String sayHi(String name) {
  return 'Hi $name!';
}
String sayHi(String name) => 'Hi $name!';

9. named parameter

파라미터를 {}로 감싸면, 이름으로 전달 가능. 선택 사항.

void main() {
  void introduce({required String name, required int age}) {
    print('I am $name. $age yaers old!');
  }
  
  introduce(name: 'Sam', age: 5);	//I am Sam. 5 years old!
}

10. null-aware 연산자

String? name;
name.length // name은 잠재적으로 null이 가능한 변수임. 따라서 컴파일 에러.
name?.length // name이 null인 경우 에러를 발생시키지 않고 null을 리턴함.

11. private 선언

클래스에서 private, public 구분.
private 변수는 변수명 앞에 _ 붙임.


출처

https://fre2-dom.tistory.com/248
https://ssameocean.tistory.com/87
https://velog.io/@dosilv/Flutter-Dart-%EB%AC%B8%EB%B2%95-%EC%A0%95%EB%A6%AC-type-operator-function-null-safety

profile
handsome

0개의 댓글