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传递参数

将接口从片段传递到kotlin中的活动

如何检查传递给函数的参数数量是不是错误

xml Eclipse模板(代码片段)检查参数并最终抛出IllegalArgumentException

Flex:RemoteObject,传递命名参数

使用 std::thread 函数 C++11 将指针作为参数传递