728x90
728x90

Initializer List

들어가며

  • DartInitializer List에 대해 간단하게 정리해본다.

 

Initializer List

개념

  • 생성자(constructor)가 실행되기 전에 필드(Field)를 초기화하기 위한 문법
  • 생성자 선언 뒤에 @:@(콜론)을 붙여 초기화 구문을 나열한다.
  • 생성자 바디(@{}@)보다 먼저 실행된다.

 

사용 목적

  • @final@ 필드 초기화
  • @super@ 생성자 호출
  • 생성자 로직 이전에 반드시 완료되어야 하는 값 설정

 

예시 코드

class User {
  final String id;
  final String name;

  User(this.name) : id = uuid.v4();   // Initializer List
}

 

  • @id = uuid.v4()@는 생성자 바디가 실행되기 전에 실행된다.
  • @final@ 필드는 반드시 생성 시점에 초기화되어야 하므로, id 생성 시 Initializer List가 자주 사용된다.
  • @uuid.v4()@는 @package:uuid/uuid.dart@에서 제공하는 함수로, 객체 생성 시 고유 ID를 자동 생성하는 경우에 사용된다.

 

class Person {
  Person(this.name);
  
  final String name;
}

class Student extends Person {
  Student(String name, this.grade) : super(name);   // Initializer List

  final int grade;  
}

 

  • @super(name)@ 부분도 Initializer List를 사용한 경우에 해당하며, 부모 클래스의 생성자는 자식 생성자 본문보다 먼저 호출되어야 하기 때문에 사용된 경우이다.

 

참고 사이트

 

Constructors

Everything about using constructors in Dart.

dart.dev

 

728x90
728x90