| 가변적인 메소드의 parameter 갯수를 이용하려면 AS2.0 버전까지는 arguments 오브젝트를 사용하여 임의의 parameter 에 접근할 수 있었다. 하지만 AS3.0 에서는 컴파일러의 좀더 철저한 데이타 타입의 체크와 parameter 관리에 의해 기존의 방법을 쓸 수가 없게 되었다.
<AS2.0> function parameterTest():Void{ trace(arguments.length) //parameter 갯수를 알수 있음 }
parameterTest(1,2,3); result--> 3
<AS3.0> function parameterTest():void{ trace(arguments.length) }
parameterTest(1,2,3); result--> compiler error : Incorrect number of arguments.
AS3.0 에서는 메소드 정의시 parameter 갯수와 호출시 parameter 갯수가 일치해야만 한다. 그렇지 않으면 위와 같이 arguments 갯수에 오류가 있다고 에러를 발생시키게 된다. 이를 위해 ...(rest) paremeter 구문을 새롭게 제공하였는데 사용법은 단순히 ... 뒤에 사용자가 원하는 parameter array 이름을 써주면 된다.
function parameterTest(...param):void{ trace(param.length) // param 은 배열 타입이다. }
다른 parameter 와 같이 사용하려면 function parameterTest(str1:String,str2:String,...param):void{ //.....statements } 마지막에 ...(rest) parameter 를 써주면 된다.
주의할 점은 위 방법을 사용하면서 arguments 오브젝트를 동시에 사용할 수 없다는 점이다.
|