DART

[노마드코더 : Dart 시작하기] #4.3 Named Constructors

유호야 2022. 11. 20. 07:43
반응형

 

 

다시 듣고 해보기~!


복습

  Player.createRedPlayer({
    required String name,
    required int age,
  })  : this.age = age,
        this.name = name,
        this.team = 'red',
        this.xp = 0;

createRedPlayer 생성자의 파라미터를 필수 값으로 받은 후에 Player 객체들의 변수들을 
: 세미콜롬 이후에 해당 변수들을 각각의 값으로 초기화하겠다는 이야기 

class Player {
  final String name;
  int xp, age;
  String team;

  Player(
      {required this.name,
      required this.xp,
      required this.team,
      required this.age});

  Player.createGreenPlayer(String name, int age)
      : this.name = name,
        this.age = age,
        this.team = 'Green',
        this.xp = 0;

  Player.createRedPlayer({
    required String name,
    required int age,
  })  : this.age = age,
        this.name = name,
        this.team = 'red',
        this.xp = 0;

  void sayHello() {
    print("Hi, my name is $name");
    // unless you made a variable named with 'name'
    // we don't use like $this.name
  }
}

void main() {
  var player = Player.createRedPlayer(
    name: "nico",
    age: 15,
  );
  // we don't have to write like new Player();
  player.sayHello();

  var player2 = Player.createGreenPlayer("Ronaldo", 30);

  player2.sayHello();
}

파라미터를 {} set (?) 형태로 받지 않았다면, 생성자를 생성할 때 역시 positional 형태로 파라미터를 입력해야 한다. 

기본적으로 positional의 경우는 default 값이 required이기 때문에 작성하지 않아도 돼지만, set {} 형태로 파라미터를 작성하게 되면 입력해야 한다. 

다른 언어와 다르게 {} 대신에 : 를 사용해서 입력한다는 점이 헷갈리 수 있지만, Flutter에서 금방 익숙해질 것이다! 

반응형