앱 만들기 프로젝트/Dart

Dart - 4.3 Named Constructors

지나가는물리학부생 2024. 10. 16. 16:13
반응형

이제, class 객체를 일부 변수만 가져와서 intialize하는 방법을 알아보자.

다음의 두 constructor들을 만들 것이다.

  1. xp = 0인 blue팀 player 생성 -> createBluePlayer
  2. xp = 0인 red팀 player 생성 -> createRedPlayer
class Player {
  final String name;
  // 아래처럼 한번에 선언할 수도 있다.
  int xp, age;
  String team;

  // 변수 순서 안중요함.
  Player(
      {required this.name,
      required this.xp,
      required this.team,
      required this.age});

  // ':' 뒤 -> class initialize
  // named parameter 이용하는 경우
  Player.createBluePlayer({
    required String name,
    required int age,
  })  : this.age = age,
        this.name = name,
        this.team = 'blue',
        this.xp = 0;

  // positional parameter를 이용하는 경우
  Player.createRedPlayer(String name, int age)
      : this.age = age,
        this.name = name,
        this.team = 'red',
        this.xp = 0;

  void sayHello() {
    print("Hi my name is $name");
  }
}

':' (colon)뒤가 핵심이다.

name과 age를 불러온 후에 colon 뒤에서 변수를 초기화 해서 constructor를 생성한다.

이를 사용하려면 다음과 같이 사용하면 된다. 

void main() {
  var player = Player.createBluePlayer(name: "me", age: 25);
  var player2 = Player.createRedPlayer("me", 21);
}

createBluePlayer는 named parameter를 이용하며, createRedPlayer는 positional parameter를 사용했다.

그래서 createRedPlayer는 변수의 순서가 중요함을 잊지 말자.

 

특이하면서 꽤 직관적인 문법이다...

반응형

'앱 만들기 프로젝트 > Dart' 카테고리의 다른 글

Dart - 4.6 Enums  (1) 2024.10.16
Dart - 4.5 Cascade Notation  (0) 2024.10.16
Dart - 4.2 Named Constructor Parameters  (0) 2024.10.16
Dart - 4.1 Constructors(생성자)  (0) 2024.10.16
Dart - 4.0 Your First Dart Class  (0) 2024.10.16