Apache flex Flex:传入函数并检查参数

Apache flex Flex:传入函数并检查参数,apache-flex,function,flex4,callback,closures,Apache Flex,Function,Flex4,Callback,Closures,我将一个函数传递给另一个运行良好的函数。假设函数“内部”被传递给函数“外部”。我的问题是,我希望函数“外部”能够检查函数“内部”中是否有任何参数及其类型。我将内部函数用作回调函数,因此它必须有一个特定类型的参数。我希望尽早发现任何问题,因此希望“外部”函数检查此问题 如何检查函数的参数?这在Flex中可能吗 在编译时感谢 实际上,可以进行编译时检查。这取决于你愿意做出多大的飞跃。要使其发挥作用,您必须使用ActionScript而不是ActionScript编写代码,并在编译时使用它。哈克斯有一

我将一个函数传递给另一个运行良好的函数。假设函数“内部”被传递给函数“外部”。我的问题是,我希望函数“外部”能够检查函数“内部”中是否有任何参数及其类型。我将内部函数用作回调函数,因此它必须有一个特定类型的参数。我希望尽早发现任何问题,因此希望“外部”函数检查此问题

如何检查函数的参数?这在Flex中可能吗


在编译时感谢

实际上,可以进行编译时检查。这取决于你愿意做出多大的飞跃。要使其发挥作用,您必须使用ActionScript而不是ActionScript编写代码,并在编译时使用它。哈克斯有一本很好的读物

在运行时

如果您不想走那么远,以下是在AS中如何做到这一点:您必须使用该函数。假设您有这样一个测试类:

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>


就在那里!检查所需的所有信息但是这种方法有一个很大的警告:
descripeType
方法不是很有效。如果您必须经常这样做,它将减慢您的应用程序。不过,您可以使用缓存策略来避免这种情况。或者看看这个项目,它会为您处理缓存。

它必须在编译时进行,还是运行时检查正常?理想情况下是在编译时进行,但我认为这是不可能的。我认为运行时间很好。我只想尽快发现任何问题。如果您愿意稍微放松一点,您可以查看函数的length参数以了解它需要的参数数量。您的方法名称是
test
,但XML中的名称是
start
。这是打字错误吗?@merv复制/粘贴错误。马上修好。谢谢你指出这一点。我想了很多,但我不想自己编辑它,以防万一我看错了。现在得到+1;)杰出的这是一个很好的答案。我不知道哈克斯的事,所以我会查一查。不过现在我将尝试使用DescripteType。谢谢你的帮助。