โšก Dart class

jinoยท2023๋…„ 3์›” 18์ผ
0

๐Ÿ’ฏ class๋ฅผ ๋งŒ๋“ค ๋•Œ๋Š” var์„ ์ด์šฉํ•˜๋Š” ๋Œ€์‹  ๋ช…์‹œ์ ์œผ๋กœ type์„ ์ง€์ •ํ•ด์ฃผ์–ด์•ผ ํ•จ.
๐Ÿ’ฏ dart ์–ธ์–ด์—์„œ๋Š” instance๋ฅผ ๋งŒ๋“ค ๋•Œ 'new' ํ‚ค์›Œ๋“œ๊ฐ€ ํ•„์š”์—†์Œ!!
๐Ÿ’ฏ class์•ˆ์—์„œ๋Š” $this.name์ฒ˜๋Ÿผ 'this' ํ‚ค์›Œ๋“œ๋ฅผ ํ†ตํ•ด ๋ช…์‹œ์ ์œผ๋กœ ํ‘œ์‹œํ•ด ์ค„ ํ•„์š”๊ฐ€ ์—†์Œ!!

๐Ÿš€ Class

class Player {
	String name = 'jino';
    int xp = 100;
    
    void sayHello(){
    	print("Hello, my name is $name");
    }
}

void main(){
	var player = Player();
    player.name = 'brian';
    print(player.name)
}
// brian

๐Ÿš€ Constructors

์ดํ›„์— name์„ ๋ชป ๋ฐ”๊พธ๊ฒŒ ํ•˜๊ณ  ์‹ถ์€๋ฐ, late ์—†์ด final๋กœ ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธํ•˜๋ฉด error๊ฐ€ ๋œธ!
์ƒ์„ฑ์ž์—์„œ ๋‚˜์ค‘์— name์„ ์ง€์ •ํ•˜๊ฒŒ ํ•˜๊ณ  ์‹ถ์€๋ฐ, ์ดํ›„ ๊ทธ ๊ฐ’์„ ํ™•์ •ํ•˜๊ณ  ์‹ถ์œผ๋ฉด 'late final'

class Player {
	late final String name;
    late int xp = 100;
    
    // ์ƒ์„ฑ์ž ๊ตฌํ˜„ ๋ฐฉ์‹ 1
    Player(String name, int xp){
    	this.name = name;
        this.xp = xp; 
    }
    // ์ƒ์„ฑ์ž ๊ตฌํ˜„ ๋ฐฉ์‹ 2 
    Player(this.name, this.xp);
    ์ด๋ ‡๊ฒŒ ์ƒ์„ฑ์ž๋ฅผ ๊ตฌ์„ฑํ•  ๊ฒฝ์šฐ, late keyword๋ฅผ ๋นผ์ฃผ๋ฉด ๋จ!
    
}

void main(){
	var player = Player("jino", 2000);
    var player2 = Player("brian", 3000);
}

๐Ÿš€ Named Constructor Parameters

Instance๋ฅผ ๋งŒ๋“ค ๋•Œ ๋งŽ์€ parameter๋“ค์ด ํ•„์š”ํ•  ๋•Œ ์œ ์šฉํ•˜๋‹ค!

class Player {
	final String name;
	int xp, age;
	String team;
    
    Player({ 
      required this.name,
      required this.xp,
      required this.team,
      required this.age
  	});
}

void main(){
	var player = Player({ name : 'jino', xp : 300, team: 'red', age: 20 })
}

๐Ÿš€ Named Constructors

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;
}
// positional arguments ( createRedPlayer์˜ case )๋“ค์€ ๊ธฐ๋ณธ์ ์œผ๋กœ required์ž„.
void main(){
	var bluePlayer = Player.createBluePlayer({name : 'jino', age : 20});
	var redPlayer = Player.createRedPlayer('brian', 27);
}

๐Ÿš€ ์—ฐ์Šต ์˜ˆ์ œ

class Player {
	final String name;
    int xp;
    String team; 
    
    Player.fromJson(Map<String, dynamic> PlayerJson) :
    	name = PlayerJson['name'];
        xp = PlayerJson['xp'];
        team = PlayerJson['team'];
        
    void sayHello() {
    	print("hello, my name is $name");
    }
}

void main(){
	var apiData = [{
    	"name" : "jino",
        "team" : "blue",
        "xp" : 0,
    }, {
    	"name" : "brian",
        "team" : "blue",
        "xp" : 0,
    }, {
    	"name" : "john",
        "team" : "blue",
        "xp" : 0,
    }];
    apiData.forEach((playerJson){
    	var player = Player.fromJson(playerJson);
		player.sayHello();        
    })
    
    // result : 
    	Hi my name is jino
        Hi my name is brian
        Hi my name is john
                        
}
profile
์–ด์ œ๋ณด๋‹ค ์˜ค๋Š˜ ๋” ์„ฑ์žฅํ•˜๋Š” ๋””๋ฒจ๋กœํผ

0๊ฐœ์˜ ๋Œ“๊ธ€