我将函数传递给另一个运行良好的函数。假设函数“inner”正在传递给函数“outer”。我的问题是我希望函数“外部”能够检查函数“inner”中是否有任何参数及其类型。我使用内部函数作为回调,因此重要的是它有一个特定类型的参数。我想尽早发现任何问题,所以希望“外部”功能检查这个。
如何检查功能的参数?这在Flex中是否可行?
由于
答案 0 :(得分:2)
实际上可以进行编译时间检查。这取决于你愿意做出多大的飞跃。为此,您必须在Haxe而不是ActionScript中编写代码,并在编译时使用targeting the Flash platform。对Haxe有一个很好的解读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项目,它将为您处理缓存。