Dart class - named constructor 본문
반응형
06. dart class - named constructor
named consturctor
- named constructor : 커스텀 생성자를 만든다. 본인의 입맛에 맞게 초기화 진행, : 이라는 신기한 문법사용.
- : 뒤에 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.createBluePlayer({required String name, required int age})
: this.age = age,
this.name = name,
this.team = "blue",
this.xp = 0;
Player.createRedPlayer(String name, int age)
: this.age = age,
this.name = name,
this.team = "red",
this.xp = 0;
}
void main() {
// named parameter
var bluePlayer = Player.createBluePlayer(name: "tom", age: 123);
// positional parameter
var redPlayer = Player.createRedPlayer("tom", 124);
}
다음과 같은 상황에 유용하다
- api 데이터를 수신받았다고 가정하면,
- Player class의 named constructor를 만들고, 받아온 api 데이터타입을 인자로 받습니다.
- 그 후, : 문법을 이용해서 클래스의 초기화를 진행합니다.
class Player {
final String name;
int xp, age;
String team;
Player.fromJson(Map<String, dynamic> playerData)
: this.name = playerData['name'],
this.xp = playerData['xp'],
this.age = playerData['age'],
this.team = playerData['team'];
void sayHello() {
print("Hello, my name is $name, I'am $age, my team is $team, my xp is $xp");
}
}
void main() {
var apiData = [
{
"name": 'player01',
"team": "red",
"xp": 100,
"age": 10,
},
{
"name": 'player02',
"team": "blue",
"xp": 200,
"age": 20,
},
{
"name": 'player03',
"team": "green",
"xp": 300,
"age": 30,
},
];
// 데이터를 순회하면서 sayHello 메서드를 수행합니다.
apiData.forEach((playerData) {
// named consturctor로 초기화
var player = Player.fromJson(playerData);
player.sayHello();
});
// Hello, my name is player01, I'am 10, my team is red, my xp is 100
// Hello, my name is player02, I'am 20, my team is blue, my xp is 200
// Hello, my name is player03, I'am 30, my team is green, my xp is 300
}
반응형
'Dart' 카테고리의 다른 글
Dart class - advanced (0) | 2023.04.28 |
---|---|
Dart class - basic (0) | 2023.04.28 |
Dart 함수 (function) 알아보기 (0) | 2023.04.28 |
Dart 자료형 (Data Type) (0) | 2023.04.28 |
Dart 변수 알아보기 ( variables ) (0) | 2023.04.28 |
Comments