Flex:传递函数和检查参数

时间:2011-12-05 14:33:50

标签: flex function flex4 callback closures

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

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

由于

1 个答案:

答案 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项目,它将为您处理缓存。