본문 바로가기
Dart/심화

[Dart] non nullable 변수의 초기화 시기

by 붕어사랑 티스토리 2022. 6. 10.
반응형

 

https://dart.dev/null-safety/understanding-null-safety

 

Understanding null safety

A deep dive into Dart language and library changes related to null safety.

dart.dev

 

공식문서 null safety의 이해에서 발췌, Uninitialized variables항목 참고

 

1. 개요

Dart의 non nullable 변수는 사용전에 반드시 초기화 해 주어야 한다.

 

그런데 코드를 작성하다보면 사용전에만 초기화 하면 될 줄 알았는데 어떤 경우에는 선언과 동시에 초기화를 해야하는 경우가 있다.

 

어떨때는 나중에 초기화해도 되고, 어떨때는 반드시 선언과 동시에 초기화 해야하는데 이 문서는 이를 정리한 내용이다.

 

 

 

1. 전역변수와 정적변수일 때

아래와 같이 전역변수와 정적 변수일 때는 반드시 선언과 동시에 초기화 해 주어야 한다

// Using null safety:
int topLevel = 0;

class SomeClass {
  static int staticField = 0;
}

main(){
  print("Hello World");
}

 

2. 로컬변수일 때

로컬변수의 경우에는 flexible하다. 이 말인 즉 선언과 동시에 초기화 해 줄 필요는 없다.

// Using null safety:
int tracingFibonacci(int n) {
  int result;
  if (n < 2) {
    result = n;
  } else {
    result = tracingFibonacci(n - 2) + tracingFibonacci(n - 1);
  }

  print(result);
  return result;
}

 

3. 이니셜라이저에 초기화가 정의되어 있을 때

아래처럼 이니셜라이저에 초기화가 정의되어 있는 경우 선언과 동시에 초기화 할 필요가 없다.

정의되어있지 않은경우 선언과 동시에 초기화가 필요하다.

// Using null safety:
class SomeClass {
  int atDeclaration = 0; // 생성자에 초기화가 없으므로 선언과 동시에 초기화 정의 필요
  int initializingFormal;
  int initializationList;

  SomeClass(this.initializingFormal)
      : initializationList = 0;
}

 

 

4. 함수에 optional 파라미터로 non nullable일 때

optional 파라미터가 non nullable인 경우 반드시 default 값을 넣어주어야 한다.

func([String optional = "Hello BoungUh!"]){
  print(optional);
}

 

반응형

'Dart > 심화' 카테고리의 다른 글

[Dart] late변수 사용 시기, nullable변수와의 차이  (0) 2022.06.09
[Dart] Type Promotion이란  (0) 2022.06.08

댓글