본문 바로가기
Flutter/Flutter FAQ

Flutter 'Dart에서 'late' 변수가 초기화되었는지 확인하는 방법은 무엇인가요?', How to check 'late' variable is initialized in Dart

by 베타코드 2023. 7. 19.
반응형

질문


코틀린에서는 아래와 같이 'late' 타입 변수가 초기화되었는지 확인할 수 있습니다.

lateinit var file: File    
if (this::file.isInitialized) { ... }

다트에서도 이와 유사한 작업을 할 수 있을까요..?


답변


아쉽게도 이는 불가능합니다.

문서에서는 다음과 같이 설명하고 있습니다:

초기화 여부를 확인해야 하는 경우 늦은 변수를 피하십시오.

Dart는 늦은 변수가 초기화되었는지 또는 할당되었는지를 확인할 수 있는 방법이 없습니다. 변수에 액세스하면, 초기화기(있는 경우)를 즉시 실행하거나 예외를 throw합니다. 때로는 늦게 초기화되는 일부 상태가 있을 수 있으며, 이 경우 늦은 변수가 적합할 수 있지만, 초기화가 이미 발생했는지 확인할 수 있어야 합니다.

물론, 상태를 늦은 변수에 저장하고 변수가 설정되었는지를 추적하는 별도의 부울 필드를 가지고 초기화를 감지할 수 있지만, Dart는 늦은 변수의 초기화 상태를 내부적으로 유지하기 때문에 이는 중복된 작업입니다. 대신, 변수를 늦은 변수가 아닌 Nullable로 만드는 것이 일반적으로 더 명확합니다. 그러면 null을 확인하여 변수가 초기화되었는지 확인할 수 있습니다.

물론, 변수에 대한 null이 유효한 초기화 값인 경우, 별도의 부울 필드를 가지는 것이 의미가 있을 수 있습니다.

https://dart.dev/guides/language/effective-dart/usage#avoid-late-variables-if-you-need-to-check-whether-they-are-initialized

반응형

댓글