ActionScriptは次のような書き方をすると、数のわからない複数の引数(不特定多数、可変長の引数)を受けることができます。

public function hoge(...args):void
{
	// 引数は、配列のように args[0]、args[1]のように添え字を付けることで
	// 参照できます。また、args.lengthとすれば引数の数も取得できます。
}

ですが、例えば受け取った引数をそのまま別のメソッドに渡したい場合、どうすれば良いでしょうか?次のようにした場合、引数の数が限られてしまうので問題があります。

public function max(...args):Number
{
	var maxNum:Number = Math.max(args[0], args[1], args[2]);//数が固定される
	return maxNum;
}

また、次のようにすると型違いでコンパイル時にエラーが出ます。

public function max(...args):Number
{
	var maxNum:Number = Math.max(args);//型違いでコンパイルエラー。
	return maxNum;
}

これを解決すべく登場するのが、Functionインスタンスのapplyというメソッドです。

  • Powered by Movable Type 5.01