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' 카테고리의 다른 글
플러터 기본기 다지기 (2) | 2024.11.05 |
---|---|
dart(함수, 메서드) (0) | 2024.09.06 |
컬렉션(자료구조) (0) | 2024.09.06 |
프로젝트 구조 (0) | 2024.09.06 |
변수 (1) | 2024.09.06 |