본문 바로가기
개발/Dart

Dart 기초 - 04. Nullable 변수, 그리고 null safety 란?

by 왼하루 2023. 1. 23.
반응형

Dart의 Nullable 변수는 ? 기호를 사용하여 null 값을 허용하는 기능이며, 이를 사용하면 null 값을 검사하여 예외를 방지할 수 있습니다.

 

Nullable 변수

Dart에서는 기본적으로 타입을 명시하면 해당 타입의 객체만 할당 할 수 있습니다. 즉, 기본적으로 모든 변수는 non-nullable 입니다. 하지만, null 값을 허용하려면 ? 기호를 사용하여 Nullable 변수를 선언할 수 있습니다. 즉 타입이 명시된 변수에 null 값을 저장할 수 있습니다.

 

  • Nullable 변수 사용법
  • Nullable 변수 사용시 null 값 처리는 필수
  • null safety 란?

 

Nullable 변수 사용법

일반 변수는 null 값을 할당할 수 없습니다. 

String name = "John";
print(name); // John
name = null; // error: A value of type 'null' can't be assigned to a variable of type 'String'.

 

결과는 아래처럼 error 가 발생합니다.

결과

 

하지만, 아래와 같이 ? 기호를 사용하여 Nullable 변수를 선언하면 그 변수는 null 값을 할당할 수 있습니다.

String? name;
name = "John";
name = null;
print(name); //null

 

null 값이 정상적으로 출력되었습니다.

결과

 

이러한 Nullable 변수를 사용하면 null 값을 허용하는 코드를 작성할 수 있으며, 프로그램 실행 중 null 값을 검사하여 예외를 방지할 수 있습니다.

 

 

Nullable 변수 사용시 null 값 처리는 필수

Nullable 변수를 사용하면 null 값을 허용하는 코드를 작성할 수 있지만, 이를 사용하면 null 값을 처리하지 않은 상태로 코드가 실행될 수 있습니다. 이는 컴파일러가 null 값을 참조하여 error를 야기시킬 수 있습니다.

 

따라서 ? 를 붙인 nullable 변수는 이 변수가 null 인지 아닌지를 확인할 수 있는 코드를 작성해 줍니다.

void main(){
    String? name = "john";
    name = null;
    // null 인지 확인
    if(name != null){
   	 name.isNotEmpty;
    }
}

 

또한 null-safe 연산자(?.)를 사용하면 null 값을 검사하여 null이 아닐 경우에만 코드를 실행할 수 있습니다.

void main(){
    String? name = "john";
    name = null;
    // null safety 연산자 활용
    name?.isNotEmpty;
}

 

 

null safety 란?

null safety 란 어떤 변수, 혹은 데이터가 null이 될수 있음을 명시하는걸 뜻합니다. 즉, 개발자가 null 값을 참조할 수 없게 하는 것입니다. null safety로 인해 Dart 컴파일러는 어떤 데이터가 null 일 때 참조하지 않도록 도와줍니다.

 

즉, null safety 는 nullable 변수를 선언하는 것과 같습니다.

 

 

마무리

Dart의 Nullable 변수는 ? 기호를 사용하여 null 값을 허용하는 기능이며, 이를 사용하면 null 값을 검사하여 예외를 방지할 수 있지만 신중하게 사용해야 합니다.

 

오늘도 행복한 코딩생활 되시길 바라겠습니다.

 

감사합니다.

댓글