apache-flex Flex:传入函数并检查参数

ltskdhd1  于 2022-10-31  发布在  Apache
关注(0)|答案(1)|浏览(253)

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

bxgwgixi

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项目,它会为你处理缓存。

相关问题