2011-04-19 3 views
0

ActionScript 3에서 (익명) 함수가 ... (rest) 매개 변수를 정의했는지 확인할 수있는 방법이 있습니까? function.length 속성이 있지만 명시 적으로 정의 된 인수 만 집계한다는 것을 알고 있습니다.Function.length 및 variable (... rest) 인수 길이 [AS3]

+0

나는 당신이 의미하는 바를 이해하지 못합니다. 휴식을 취할 수 있지만 arguments [0]와 같은 arguments 배열에 액세스 할 수 있습니다. 길이를 알고 있으면 요소를 얻을 수 있습니다. –

답변

1

함수가 호출되었을 때 함수가 매개 변수를 정의했는지 여부를 확인하려면 실제로이 작업을 수행하는 유일한 방법은 함수 클래스의 프로토 타입을 작성한 다음 새로 프로토 타입 화 된 함수 클래스 내에서 캡처하는 것입니다 args 배열 매개 변수를 확인하고 null인지 확인하십시오. 나는 당신을 위해 모든 코드를 작성하고 작성하지 않을 것이지만 (시간 부족)이 프로세스를 철저하게 설명하고 잘 진행하는 좋은 기사가 있습니다.

http://tobyho.com/Modifying_Core_Types_in_ActionScript_3_Using_the_Prototype_Object

1

함수는 ... 나머지 매개 변수를 정의되어 있는지 확인하는 방법이 있습니다,하지만 당신은 단지 기능의 몸에서이를 확인할 수 있습니다. 함수 본문 외부에는 첫 번째 추적 출력에 표시된 것처럼 함수에 0 개의 매개 변수가 있습니다. 사실, this ... rest 매개 변수는 함수 본문 안에 범위 만있는 배열입니다. 그러나 일단 함수 본문 안에 있으면 두 번째 및 세 번째 추적 출력에 표시된대로 테스트 할 수 있습니다.

public function Test() 
    { 
     trace(doSomething.length); 
     doSomething(7, 8, 9, 10); 
    } 

    public function doSomething(...numbers):void 
    { 
     if (numbers.length > 0) trace("Found the parameters!"); 
     for (var i:int = 0; i < numbers.length; i++) trace(numbers[i]); 
    } 

Output: 0  
Output: Found the parameters!  
Output: 7 8 9 10 
+0

필자는이 기능을 빛의 반사와 함께 감지하는 방법을 찾고있었습니다. – forivall