Dart #4 | 다트의 변수, Null Safety

HyeonWooGa·2023년 4월 27일
0

Dart

목록 보기
5/25
post-thumbnail

다트의 변수


  • 변수 선언 방식을 이해한다.
  • 기본 자료형 변수를 이해한다.
  • 동적 변수 타입을 이해한다. (Dynamic)
  • 정적으로 고정되는 변수 타입을 이해한다. (Final, Constant)
  • 비동기적 변수 타입을 이해한다. (Late)
  • Null Safety 와 Non-Nullable 변수 타입을 이해한다.

변수 선언 방식

// 1. var 키워드 사용 선언과 동시 할당

void main () {
  var name = 'park';
  var age = 31;
  // var 키워드를 사용해도 dart 에서 자료형 알아서 추론해준다.
  // 변수 선언시 var 키워드 사용이 제일 권장된다.
  // ex) 함수 내 변수 선언, 메소드 내 변수 선언 등
  
  // var 키워드 사용시 자료형이 동일한 경우 변수의 값 자유롭게 변경 가능
  name = 'lee';  // OK
  age = 30;  // OK
  name = 32;  // Error
  age = 'kim';  // Error
}

// 2. var 키워드 외에 기본 자료형 키워드 등을 사용
void main () {
  String name = 'park';
  int age = 31;
  // 관습적으로 class 내 property 를 정의할 때 자료형 키워드 사용
  
  // var 키워드 사용 변수 선언과 동일하게 자료형이 동일한 경우 변수의 값 자유롭게 변경 가능
  name = 'lee';  // OK
  age = 30;  // OK
  name = 32;  // Error
  age = 'kim';  // Error
}

기본 자료형

  1. String: 문자열
  2. int: 정수
  3. double: 소수
  4. num: 숫자 (int, double 의 부모 클래스로 정수, 소수 모두 가능)
  5. boolean: true or false

동적 변수 타입 (Dynamic)

  • 모든 타입으로 초기화가 가능한 타입입니다.
  • vardynamic 키워드가 사용됩니다.
  • dynamic 은 동적으로 타입변경이 됩니다.
    • 다트의 dynamic == JS의 var
  • var 은 초기화시 타입을 추론해 하나의 타입으로 지정됩니다.
    • 다트의 var != JS의 `var'
  • dynamic 키워드 사용시 타입안전성을 조금 낮추어 보다 유연한 프로그래밍을 짤 수 있습니다.
    • 타입안전성이 떨어지다 보니 특정 경우에만 조심스럽게 사용해야 합니다.
// 변수의 타입을 모를때 혹은 여러 타입을 가지는 변수가 필요할 때 사용합니다.
// 기본적으로 사용이 지양됩니다. 다만 null safety 적용됩니다.

void main() {
  dynamic anything1;
  var anything2;
  
  anything1 = 'park';
  anything1 = 31.02;
  anything1 = true;
  
  anything1 = 'lee';
  anything1 = 30;
  anything1 = true;
}

정적으로 고정되는 변수타입을 이해합니다. (Final, Const)

  • Final: JavaScript 의 const 키워드와 동일한 동작
  • Const: 컴파일 시 고정된 값을 가지는 변수일 떄 사용 ex) api 주소, 최댓값 등

비동기적 변수 타입 (Late)

  • 선언할 때 변수의 값을 할당해주지 않지만 해당 변수에 꼭 값이 들어가야만 할때 late 키워드를 사용합니다.
  • late 키워드를 사용한 변수에 값이 할당 되지 않고 사용하려고 하면 컴파일이 안됩니다.
void main() {
  late var anything;  // dynamic
  print(anything);  // Error
  anything = true;
  print(anything);  // OK
  
  late String name;  // String
  print(name);  // Error
  name = 'park';
  print(name);  // OK
}

Null Safety

  • 개발자가 Null 을 참조해서 문제가 생기지 않도록 기본적으로 Dart 의 변수들은 Non-Nullable
  • 따라서 변수가 Null 이 되는가 있는 경우엔 명시를 해줘야함
  • 변수 자료형에 따른 프로퍼티나 메소드를 사용하고 싶은데 Nullable 인 경우 해당 사항도 명시 해줘야함
void main() {
  String non_nullable;
  non_nullable = null;  // Error
  
  String? nullable;
  nullable = null;  // OK
  nullable.isEmpty;  // Error
  nullable?.isEmpty;  // OK
}

학습 중에 작성된 내용이므로 잘못되거나 부족한 내용이 있을 수 있습니다.

profile
Aim for the TOP, Developer

0개의 댓글