2009-06-09 4 views
2

다음과 같이 클래스의 모든 함수를 사용할 수 있습니다.functionscript 2.0에서 함수의 매개 변수 목록에 프로 시저로 액세스

for (var member in obj) { 
    if (obj[member] instanceof Function) { 
     var f:Function = obj[member]; 
     ... 
    } 
} 

actionscript의 함수 매개 변수 목록을 가져 오는 방법이 있습니까? 예를 들어, 이렇게하는 함수를 작성할 수 있습니까?

function getFunctionArguments (f:Function) : Array { 
    var argumentArray:Array = new Array(); 
    for (...) { 
     ... 
     argumentArray.push({ name:<argumentName>, type:<argument type> }); 
    } 
    return argumentArray; 
} 

그렇다면 타원은 무엇입니까?

답변

2

노 즐리. 해결 방법을 알려 드리고 싶습니다만, 이와 같은 함수의 서명을 조사 할 방법은 없습니다. 함수가 실제로 때 무엇 당신이 할 수있는

arguments 객체로보고, 당신이 상관없이 서명의 인수를 통해 찾아 볼 수 있습니다 그 안에,을했다. 예 :

function doSomething() { 
    if (arguments.length > 0) { 
     if (typeof arguments[0] == "string") { 
      .... 
     } 
    } 
} 

등. 그러나 함수 서명에서 인수의 이름을 찾을 수있는 방법은 없습니다 (위와 같이 서명에 인수가 없더라도 제대로 작동합니다).

+0

알기에 꽤 유용한 점이지만, 내 동기는 디버그 코드로 내 클래스를 검사 할 수 있도록 인프라를 작성하는 것이므로 기능 본문에 들어가기 전에 할 수 있어야합니다. 다른 누군가가 더 기발한 트릭을 제공하는 경우 약간의 질문을 드리겠습니다.하지만 귀하가 옳은 것처럼 보입니다. – fastcall

+0

그래, 내가 그 이유를 짐작했다. 나는 방금 항의했다. 당신이 찾고있는 것은 확실히 가능하지 않습니다. AS3에서도 그렇습니다. 가능한 유일한 접근 방법은 SWF 자체의 바이너리 내용 (플래시 외부에서 수행되어야 함)을 검사하는 것입니다. 그렇더라도 함수 인수가 문자열 테이블에서 이름을 가져올 지 여부를 100 % 확신 할 수 없습니다. – fenomas

관련 문제