2011-12-05 4 views
1

나는 잘 작동하는 다른 함수에 함수를 전달하고 있습니다. 함수 "inner"가 "outer"함수에 전달되었다고 가정 해 봅시다. 내 문제는 함수 "내부"및 해당 형식의 매개 변수가 있는지 확인할 수 있도록 함수 "외부"함수를 원하는 것입니다. 내부 함수를 콜백으로 사용하므로 특정 유형의 매개 변수 하나가 중요합니다. 가능한 한 일찍 문제를 잡아보고 싶으므로 "외부"기능에서이를 확인하고 싶습니다.플렉스 : 함수 전달 및 매개 변수 검사

함수의 매개 변수를 어떻게 확인할 수 있습니까? Flex에서 가능합니까? 컴파일시에

감사

+1

컴파일 할 때가 아니면 런타임 검사가 정상입니까? – RIAstar

+0

컴파일 시간이 이상적이지만 가능하지 않다고 생각합니다. 런타임은 괜찮다고 생각합니다. 최대한 빨리 문제를 파악하고 싶습니다. – RNJ

답변

2

사실은 컴파일 시간 확인이 가능합니다. 그것은 당신이 기꺼이하는 도약이 얼마나 큰지에 달려 있습니다. 이렇게하려면 코드 대신 ActionScript 대신 haXe에 코드를 작성하고 컴파일시 targeting the Flash platform으로 만들어야합니다. haXe function types on Devboy's blog에 대한 좋은 읽을 거리가 있습니다. 당신이 describeType() 기능을 사용해야합니다 :

가고 싶어하지 않는 경우 런타임에서

멀리, 어떻게 여기로 그것을 할 수 있습니다. 이 같은 테스트 클래스가 있다고 가정 :

public class TestClass {  
    public function test(s:String):void {} 
} 

우리는 지금 작성하여 기능에 대한 정보를 얻을 수 있습니다 :

var info:XML = describeType(TestClass); 

어딘가에 다음과 같다 노드가있을 것입니다이 XML 객체 :

<method name="test" declaredBy="net.riastar.test::TestClass" returnType="void"> 
    <parameter index="1" type="String" optional="false"/> 
</method> 

저기 있습니다! 귀하가 확인해야 할 모든 정보. 그러나이 접근법에는 큰주의가 있습니다. describeType 방법은 그리 효율적이지 않습니다. 이 작업을 많이해야하는 경우 응용 프로그램 속도가 느려집니다. 당신은 이것을 피하기 위해 캐싱 전략을 사용할 수 있습니다. 아니면 as3-commons-reflect 프로젝트를 보시면 캐싱을 처리해 드리겠습니다.

+0

약간 느슨해지기를 원한다면 함수의 길이 매개 변수를 살펴보고 매개 변수의 수를 살펴볼 수 있습니다. –

+0

메소드 이름은'test'이지만 XML의 이름은'start'입니다. 그건 오타예요? – merv

+0

@merv 실수를 복사/붙여 넣기. 지금 고치고있어. 그 점을 지적 해 주셔서 감사합니다. – RIAstar