Flex:传递函数和检查参数
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Flex:传递函数和检查参数相关的知识,希望对你有一定的参考价值。
我正在将函数传递给另一个运行良好的函数。假设函数“inner”正在传递给函数“outer”。我的问题是我希望函数“外部”能够检查函数“inner”中是否有任何参数及其类型。我使用内部函数作为回调,因此重要的是它有一个特定类型的参数。我想尽早发现任何问题,所以想要“外部”功能来检查这个问题。
如何检查函数的参数?这在Flex中是否可行?
谢谢
答案
在编译时
实际上可以进行编译时检查。这取决于你愿意做出多大的飞跃。要实现这一点,您必须在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项目,它将为您处理缓存。
以上是关于Flex:传递函数和检查参数的主要内容,如果未能解决你的问题,请参考以下文章
ActionScript 3 Flash,Flex和Html传递参数