본문 바로가기

Flutter-플러터/플러터 공부

null 체크 late와 ? 의 차이

반응형

flutter는 null safety를 지원한다. 그 기능 중에 late와 ?가 있다. 

 

그래서 구글 바드에게 물어봤다 

 

late를 쓰는 것과

late double recipeAmount;
late double desiredAmount;
late double setMultiplier;

? 쓰는 것에 차이가 있을까 ? 지금은 flutter 를 사용하고 있어

double? recipeAmount;
double? desiredAmount;
double? setMultiplier;

 

구글 바드 답변

 

네, late를 쓰는 것과 null을 허용하는 것을 쓰는 것에는 차이가 있습니다.

late는 변수가 정의된 후에는 항상 초기화되어야 한다는 것을 의미합니다.

반면  ?를 사용해서 null을 허용하는 것은 변수가 초기화되지 않더라도 null일 수 있다는 것을 의미합니다.

 

Flutter에서는 late를 사용하는 것이 좋습니다.

late를 사용하면 변수를 정의된 후에는 항상 초기화되어야 한다는 것을 기억할 필요가 없기 때문에 코드가 더 간결하고 이해하기 쉽습니다. 또한 late를 사용하면 변수가 초기화되지 않은 상태로 사용되는 것을 방지할 수 있습니다.

다음은 late를 사용하는 예입니다.

 

 

예시

 

late를 사용한 recipeAmount의 값은 1.0 그대로 출력

late double recipeAmount;

void main() {
  recipeAmount = 1.0;
  print(recipeAmount); // 1.0
}

 

 

?를 사용한 recipeAmount의 값은  null로 출력 

double? recipeAmount;

void main() {
  print(recipeAmount); // null
  recipeAmount = 1.0;
  print(recipeAmount); // 1.0
}

 

 

 

late 키워드는 널 안정성을 보장하는 데 도움이 됩니다.

널 안정성은 변수가 널일 수 있는지 여부를 확인하고, 널이 될 수 없는 변수에 널 값을 대입할 때 오류를 발생시킵니다. late 키워드를 사용하면 변수를 나중에 초기화할 수 있으므로, 널 안정성을 보장하는 데 도움이 됩니다.

 

late 키워드는 다음과 같은 경우에 유용합니다.

  • 변수를 나중에 초기화해야 하는 경우
  • 변수가 널일 수 있는지 여부가 확실하지 않은 경우

late 키워드를 사용하면 코드를 더 안전하게 만들고 널 오류를 방지할 수 있습니다.

반응형