我正在将一个函数传递给另一个运行良好的函数。假设函数“inner”正在传递给函数“outer”。我的问题是,我希望函数“outer”能够检查函数“inner”中是否有任何参数及其类型。我正在使用内部函数作为回调函数,因此它必须具有一个特定类型的参数。我想尽早发现任何问题,所以希望“外部”函数检查这一点。如何检查函数的参数?在Flex中可以吗?谢谢
bxgwgixi1#
在编译时
实际上,有编译时检查是可能的。这取决于你愿意做多大的飞跃。为了工作,你必须用Haxe而不是ActionScript编写代码,并在编译时使用targeting the Flash platform。有一个很好的阅读哈克function types on Devboy's blog。
在运行时
如果您不想走那么远,下面是在AS中的实现方法:你必须使用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项目,它会为你处理缓存。
describeType
1条答案
按热度按时间bxgwgixi1#
在编译时
实际上,有编译时检查是可能的。这取决于你愿意做多大的飞跃。为了工作,你必须用Haxe而不是ActionScript编写代码,并在编译时使用targeting the Flash platform。有一个很好的阅读哈克function types on Devboy's blog。
在运行时
如果您不想走那么远,下面是在AS中的实现方法:你必须使用describeType()函数。假设你有一个测试类,如下所示:
我们现在可以通过编写以下内容来获得有关其功能的信息:
在此XML对象中的某个位置将有一个节点,如下所示:
这就是你所需要的所有信息。但是在这个方法中有一个很大的警告:
describeType
方法不是很有效率。如果你必须经常这样做,它会降低你的应用程序的速度。你可以使用缓存策略来避免这种情况。或者看看as3-commons-reflect项目,它会为你处理缓存。