본문 바로가기

study/dart

Dart_(4) null safety(nullable variables)

1. null safety

null값을 참조했을 때 오류가 발생하는 것을 컴파일 하기 전에 미리 방지해주는 방법

기본적으로 모든 변수는 null값을 가질 수 없지만 null값을 필요로 하는 경우도 있다.

(잘 모르겠지만 앱을 만들고 실행하고나서 오류를 찾는 것이 아니라 만들면서 찾을 수 있도록 하기 위한 방법인 것 같다.)

(API에서 data를 받아올 때 사용할 일이 있을 것이다.)

bool isEmpty(String sentence) => sentence.length == 0;

void main(){
    isEmpty(null)
}

 

위와 같이 코드를 전개하면 오류가 발생한다.

String 이 와야 할 곳에 null 이 왔기 때문

 

2. 해결방안( nullable variables)

void main(){
    String name = 'yoon';
    name = null; // 오류
}

 

위 코드에서는 String이 와야 할 변수에 null을 할당하여 오류가 발생한다.

이 때 String name 이라는 변수가 null 값을 갖을 수 있다는 것을 알려주기 위해 아래와같이

변수를 선언할 때 물음표(?)를  붙여주어야 한다.

 

void main(){
    String? name = 'yoon';
    name = null;
}

 

하지만 이렇게 변수의 type을 nullable로 선언하여도 추가적으로 필요한 부분이 있을 수 있다.

아래의 코드를 보자

void main(){
    String? name = 'yoon';
    name = null;
    name.length; //오류
    name.isNotEmpty; //오류
}

 

위의 코드에서 .length, .isNotEmpty 메서드는 String을 받아 사용하는 메서드이다.

null을 받아 사용할 수 없기 때문에 오류가 발생한다 하여 아래와 같이 수정해주어야 한다.

 

void main(){
    String? name = 'yoon';
    name = null;
    if(name!=null){
        name.length;
        name.isNotEmpty;
    }
}

 

위와 같이 조건문을 통해 null 값이 아닐 때만 실행해준다면 문제가 되지 않을 것이다.

위 코드를 아래와 같이 간단하게 요약하여 표현할 수 있다.

 

void main(){
    String? name = 'yoon';
    name = null;
    name?.inNotEmpty;
}
반응형

'study > dart' 카테고리의 다른 글

Dart_(6) Late variables  (0) 2024.03.21
Dart_(5) Final variables, Constant variables  (0) 2024.03.21
Dart_(3) 변수(variables)  (0) 2024.03.20
Dart_(2) Hello world  (0) 2024.03.20
Dart_(1) 시작하기  (2) 2024.03.20