Flex:传递函数和检查参数

问题描述 投票:1回答:1

我正在将函数传递给另一个运行良好的函数。假设函数“inner”正在传递给函数“outer”。我的问题是我希望函数“外部”能够检查函数“inner”中是否有任何参数及其类型。我使用内部函数作为回调,因此重要的是它有一个特定类型的参数。我想尽早发现任何问题,所以想要“外部”功能来检查这个问题。

如何检查函数的参数?这在Flex中是否可行?

谢谢

flex function flex4 callback closures
1个回答
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项目,它将为您处理缓存。

© www.soinside.com 2019 - 2024. All rights reserved.