Flutter

dart Null Safety

ryeonng 2024. 9. 6. 10:45

dart Null Safety

널 세이프티(Null Safety)는 개발자가 널 에러를 피할 수 있도록 도와주는 다트 프로그래밍 언어의 기능이다.

이 기능은 사운드 널 세이프티 인 다트(Sound Null Safety in dart)라고 불리며, 이를 통해 개발자는 코드 작성 시점에 널 에러를 잡을 수 있다.

 

 

Sound Null Safety in dart (Sound Type System)

런타임 중에 null 포인터 예외를 방지하기 위해 Dart 컴파일러가 코드를 분석하고 컴파일할 때 타입 시스템에서 엄격한 규칙을 적용하는 것을 의미

 

 

Dart Null Safety의 개념

  • Null Safety는 변수에 null 값을 할당하는 것을 엄격하게 제한한다.
  • 변수를 null 또는 non-null로 선언할 수 있다. (String , String?)
  • Non-null 변수는 null을 가질 수 없으며, null 변수는 null만을 가질 수 있다.
  • Null Safety는 Dart 2.12 버전부터 기본으로 활성화되었다.
// 코드의 시작점
void main() {
  String name = "Jhon"; // 이 변수는 null 아닌 문자열만 가질 수 있다.
  int age = 30; // null 이 아닌 정수값만 가질 수 있다.

  String? nullableName; // 이 변수는 문자열 또는 null을 가질 수 있다.
  int? nullableAge; // 이 변수는 null 또는 정수값을 가질 수 있다.

  if (nullableName != null) {
    print("Name : ${nullableName}");
  }
}

 

 

null check 연산자와 null 대체 연산자

null check 연산자

Dart 언어에서 null 체크 연산자 (?)는 null 값일 수 있는 객체의 속성이나 메서드에 안전하게 접근하는 데 사용된다.

이 연산자는 null 참조 오류를 방지하고 코드를 더 견고하게 만든다. Dart에서 null 체크 연산자의 주요 두 가지 사용법이 있다. (속성과 메서드)

 

null 병합(대체) 연산자

Dart 언어에서 null 병합 연산자 (??)는 null 값 처리에 유용한 연산자이다.

이 연산자를 사용하면 변수나 표현식의 값이 null인 경우에 대체 값을 지정할 수 있다.

null 병합 연산자를 사용하여 코드를 더 간결하고 안전하게 작성할 수 있다.

 

void main() {
 
  // Dart Null Safety 개념에서 발생한 문법들
  
  // 1.
  String? myName;
//  print(myName.runtimeType);
  
  // null이 아니면, 문자열의 길이 반환
  // null이면, 0을 반환
  int resultLength = myName?.length ?? 0;
  print(resultLength);
  
  // 2.
  // name이 있다면 "NAME" -> 소문자로 출력
  // 없다면 apple 출력
  String? name = getName();
  String? returnName = name?.toLowerCase() ?? "apple";
  print(returnName);
}

  // 전역 함수
  String? getName() {
    return "NAME";
  }

'Flutter' 카테고리의 다른 글

dart(함수, 메서드)  (0) 2024.09.06
컬렉션(자료구조)  (0) 2024.09.06
프로젝트 구조  (0) 2024.09.06
변수  (1) 2024.09.06