「setter、getter、ディフォルト値」の編集履歴(バックアップ)一覧に戻る

setter、getter、ディフォルト値 - (2007/05/23 (水) 14:50:10) のソース

*setter、getter、ディフォルト値

さて、ようやっとできたScoreクラスだけど。何気に使いにくい部分があるよね。 

var score : Score = new Score( 9999 );

みたいに毎回上限決めなきゃなんないとことか、スコアの更新時に

score.setScore( score.getScore()+300 );

みたいに書かなきゃいけないところとか・・・ 
なんか、毎回単純にプロパティ弄るほうが楽だったんじゃ・・・って気もしてくる。 

そんなときには、setter / getter や、ディフォルト値ってものを使えば、クラスで関数にアクセスしたり初期化するときの手間を一気に軽減できたりするよ。

**ディフォルト値

ディフォルト値ってのは、関数を呼び出すときに引数を省略できる仕組み。
省略した場合に、代わりにディフォルトの値を渡してやる仕組みのこと。 

例えばScoreクラスは初期化の関数Scoreで毎回スコアの上限を決めていたけど、ディフォルト値を書いてしまえば、もうクラス作成時に毎回上限を決めなくても済むようになる。

public function Score( maxScore : Number = 9999);

関数( 引数名 : 型 = ディフォルト値 ) 

という風に、引数宣言の後ろにイコール初期値を書いてしまえば、省略時にはその値で引数が渡されることになる。 
また下記のように、複数の引数にディフォルト値を渡すことも可能。 

myFunction( hoge1:Number = 9999, hoge2 : Number = 1300);

1つだけ注意しなければならないのは、1つの関数にディフォルト値のある引数と、ディフォルト値のない引数が混在する場合。 
この場合、ディフォルト値のない引数が、必ず手前にこなければならない。  

myFunction( hoge:Number, hoge2:Number = 999 );

みたいに。

**setter/getter

クラスを使いやすくする、もう1つの便利機能はgetter と setter。
getter/setter は「プロパティのフリ」をした関数を作る機能。 

public function set score( value:Number ):void{ 
	setScore(value);
} 

public function get score():Number{ 
	return getScore(value);
} 

みたいに、 set, get ってのがついた関数scoreを宣言すると、 

var myScore : Score = new Score(); 
myScore.score = myScore.score + 1 

みたいに、関数scoreがプロパティとして使えるようになる! 
値を設定するときにはset, 値を取得するときには get のほうが呼ばれることになる。 

これで、普通に値が設定できるのに、自動でハイスコアの判定もしてくれるプロパティが作れるよ。