Dart

9305 단어 dartflutterdart

자료형

1. Collection

  • List
    배열. 데이터의 순서가 있으며, 중복 허용
  • Set
    Python의 셋 자료형과 동일. 데이터의 순서가 없으며, 중복 허용 불가.
  • Map
    Python의 딕셔너리 자료형과 동일. 데이터의 순서가 없으며, 키는 중복 불가, 값은 중복 가능.

연산자

1. 기본 연산자

~/ : int형 나눗셈, typecast to int
(a / b).truncate().toInt() 와 동일 (버림 -> int typecast

main() {
  double a = 3.0;
  double b = 1.5;
  
  print(a / b); // 2
}

2. 타입 검사

as : 형 변환
is :
is!

3. Null safety

Null safety는, null값을 완전 제거하는 것이 목적이 아님. null 자체는 코드에서 문제가 되지 않으나, null을 통한 메소드 호출이 코드에서는 문제가 됨.

bool isOnlyWhitespace(String string) {
	return string.trim() == '';
}
main(){
	isOnlyWhitespace(null); // Error
}

위 예시에서, string 변수에 null값 자체가 문제를 일으키는 것이 아니라, null이 호출하는 trim() 메소드가 문제를 일으킴.

변수는 null값을 초기화 값이나, 특정 자료형으로 받을 수 없음.
null값을 변수에 넣어주기 위해선, null safety 규칙을 지켜야 함.

즉, null safety는 어떤 객체(변수)가 null 값을 허용할 수 있는지, 허용 할 수 없는지 구분하기 위해서 사용함.

위 예시의 isOnlyWhitespace메소드에서 string Parameter는 null값을 허용하지 않는 Non-nullable 변수임. (null 대입 시 컴파일러 에러)

  • Non-nullable 변수는 정의 동시에 초기화 되어야 함.( null값을 허용하지 않음)
void main(){
  double nonNullable;
  double? nullable;
  nullable = null; // OK
  nonNullable = null; // Error
}
  • 특정 변수의 null값 여부 체크 ??,

    좌항 ?? 우항
    -> 좌항의 값이 null이면 우항의 값을 return.
    -> if null로 해석

main(){
    String name;
    print(name ?? "비어있습니다."); // 비어있습니다.
}
  • 조건적 프로퍼티 접근
    객체 내부에 정의된 메소드나 프로퍼티에 접근하기 위해서는, 객체 자체가 Non-nullable해야 함.

좌항 ?. 우항 : 좌항(객체)이 null이면 null을, 아니면 우항을 return

someObject?.someProperty
// same as
(someObject != null) ? someObject.someProperty : null

// 아래처럼, null인 객체가 들어오더라도, null 처리를 할 수 있다.

void main(){
  var p = null;
  print(p?.name); // null
}

3. 캐스케이드 표기

TODO

함수

1. 인자(Parameter)

2. 비동기 동작 지원

  • Future
Future networkRequest() async {
  print('start');
  await Future.delayed(Duration(seconds : 1));
  print('1');
  await Future.delayed(Duration(seconds : 1));
  print('1');
}

void main() {
  print('시작');
  networkRequest(); // Asynchronous function
  print('끝'); 
}
  • Stream
    todo

클래스

1. 생성자(Constructor)

참고

  1. Why null safety? : Youtube

좋은 웹페이지 즐겨찾기