반응형
https://dart.dev/null-safety/understanding-null-safety
공식문서 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 |
댓글