Dart late

이건선·2023년 7월 15일
0

Flutter

목록 보기
8/30

late 키워드

일반적으로, Dart는 모든 변수가 초기화되어야 합니다. 그래야만 null safety를 보장할 수 있습니다. 그러나 때로는 변수를 선언하고 초기화하는 시점을 나누고 싶을 때가 있습니다. 이 때 late 키워드를 사용하게 됩니다.

아래는 late 키워드 사용 예시입니다:

class SomeClass {
  late String name;

  void setName(String newName) {
    name = newName;
  }

  String greet() {
    return "Hello, $name";
  }
}

위의 SomeClassname이라는 String 타입의 멤버 변수를 가지고 있습니다. 이 변수에 late 키워드를 붙임으로써, 이 변수가 나중에 초기화될 것임을 Dart에게 알려줍니다.

setName(String newName) 메서드를 통해 name 변수를 초기화할 수 있습니다. 그리고 greet() 메서드는 name 변수를 사용하여 문자열을 반환합니다.

이제 SomeClass의 인스턴스를 만들고, setName() 메서드를 호출하여 name 변수를 초기화한 후, greet() 메서드를 호출해봅시다.

void main() {
  SomeClass someObject = SomeClass();
  someObject.setName("Alice");
  print(someObject.greet());  // "Hello, Alice"
}

이 코드를 실행하면 "Hello, Alice"라는 문자열이 출력됩니다.

그러나 setName() 메서드를 호출하지 않고 바로 greet() 메서드를 호출하려고 하면 어떻게 될까요?

void main() {
  SomeClass someObject = SomeClass();
  print(someObject.greet());  // Error: LateInitializationError
}

이 경우에는 LateInitializationError가 발생합니다. 왜냐하면 name 변수가 아직 초기화되지 않았기 때문입니다.

따라서 late 키워드는 변수의 초기화를 지연할 수 있게 해주지만, 해당 변수를 사용하기 전에 반드시 초기화되어야 합니다.

profile
멋지게 기록하자

0개의 댓글