[Flutter] Dart 문법 2 - Null Safety

류재성's avatar
Apr 12, 2024
[Flutter] Dart 문법 2 - Null Safety
 
💡
Null Safety 는 개발자가 Null 로 인한 에러를 피할 수 있도록 도와주는 dart의 기능이다. - 변수에 null 값을 할당하는 것을 엄격하게 제한한다. - 변수를 nullable 또는 non-null 로 선언할 수 있다. - Not-null 변수는 null을 가질 수 없으며, Null 변수는 null만을 가질 수 있다.
 

1. Null Check 연산자 (?)

 
void main() { String name = "jhon"; // 이 name 이라는 변수는 null아닌 문자열만 가질 수 있다. int age = 30 ; // null 이 아닌 정수값만 가질 수 있다. String? nullableName ; // 이 변수는 문자열 또는 null 값을 가질 수 있다. int? nullableInt ; // 이 변수는 정수값 또는 null 값을 가질 수 있다. }
 
💡
타입 뒤에 ? 가 없다면 null 값을 가질 수 없지만, ? 가 있다면 null 값을 가질 수 있다.
 
notion image
 

2. Null 대체 연산자 (??)

 
💡
(??) 연산자는 값이 null 인 경우 대체 값을 지정할 수 있다.
 
void main() { String? name = getName(); String displayName = name ?? "Unkown"; // name 값이 null 이면 Unkown 을 출력한다. print("displayName : $displayName"); } String? getName() { return null; }
 
notion image
 

3. Null 억제 연산자 (!)

 
💡
(!) 연산자는 해당 값이 null 이 아님을 나타낸다. 개발자가 해당 값이 null 이 아님을 확신할 때, 예외를 발생시키지 않기를 원할 때 유용하다. 만약 해당 값이 null이 된다면 오류가 발생하게 된다.
 
void main() { String? name = "john"; String? nameNotNullable = name!; print("name:$name"); }
 
notion image
 
void main() { String? name = null; String? nameNotNullable = name!; print("name:$name"); }
 
notion image
 

4. late 키워드

 
💡
late 키워드는 변수가 null이 아닌 경우, 변수의 초기화를 미루고, 변수가 실제로 사용되기 전에 초기화된다. 1. 변수를 정의할 때 초기화할 수 있는 시점이나 방법이 없는 경우 2. 변수를 생성자나 함수에서 나중에 초기화해야 하는 경우 3. 변수를 사용하기 전에 null 여부를 확인하거나 예외 처리를 할 필요가 없는 경우 사용한다.
 
class MyClass { late String name; // 변수를 선언한 시점에 초기화되지 않음. MyClass() { name = "홍길동"; // 변수 초기화를 나중에 함. } void printString() { print("name : $name"); } } void main() { final myObject = MyClass(); myObject.printString(); }
 
Share article

{CODE-RYU};