Computer Language/Dart
[Dart] late String과 String? 의 차이
Bull_
2024. 6. 10. 03:03
late String
설명:
late 키워드는 변수를 선언할 때 초기화되지 않은 상태로 두지만, 나중에 반드시 초기화할 것이라는 것을 보장합니다. Dart 컴파일러는 이 변수가 사용되기 전에 초기화될 것이라고 가정합니다.
Null 허용성:
기본적으로 null을 허용하지 않습니다.
사용 예:
late String name;
void initializeName() {
name = "John Doe";
}
void printName() {
print(name); // 이 시점에서는 name이 반드시 초기화되어 있어야 함
}
String?
설명:
String?는 변수에 null 값을 가질 수 있는 선택형(nullable) 타입입니다. 변수를 선언할 때 초기화되지 않아도 되고, 이후에 null로 설정할 수 있습니다.
Null 허용성:
null을 허용합니다.
사용 예:
String? name;
void setName(String? newName) {
name = newName;
}
void printName() {
if (name != null) {
print(name);
} else {
print("Name is not set");
}
}
주요 차이점
초기화 보장
late String:
나중에 반드시 초기화해야 하며, 사용 전에 초기화되지 않은 상태로 접근하면 런타임 에러가 발생합니다.
String?:
초기화되지 않더라도 null 값을 가질 수 있으며, 사용할 때 null 체크를 해야 합니다.
Null 허용성:
late String: null을 허용하지 않습니다. 초기화되지 않은 상태로 접근하려 하면 에러가 발생합니다.
String?: null을 허용합니다. null 값을 가질 수 있습니다.
요약
late String은 변수의 초기화를 나중으로 미루지만, 반드시 초기화되어야 하는 경우 사용합니다.
String?은 변수에 null을 허용해야 하는 경우 사용합니다.
두 가지 방식 모두 변수의 초기화와 null 안전성을 관리하는 데 중요한 역할을 합니다. 사용 시나리오에 맞게 적절한 방식을 선택하면 됩니다.