gpt4 book ai didi

actionscript-3 - 自定义元数据和静态函数之间的区别?

转载 作者:行者123 更新时间:2023-12-01 11:09:47 25 4
gpt4 key购买 nike

Actionscript 类中的自定义元数据非常酷。您可以将任何内容放在类、函数和变量前面的方括号中;告诉编译器将它(按名称)包含在 SWF 中;并使用 describeType() 检索它。

[MyMetaData(name1=value1, name2=value2)]

添加到“其他编译器参数”

-keep-as3-metadata+=MyMetaData

并使用 describeType() 查找具有该元数据的那些项目

var typeDescriptionXML : XML = flash.utils.describeType(aType);

var itemsWithMyMetaData : XMLList =
classXML.factory.metadata.(@name == "MyMetaData");

另一方面,静态函数相当简单:

public static function myStaticFunction() : Object
{
var result : Object = new Object({name1: "value1", name2: "value2"});
return result;
}

虽然我希望静态函数是虚拟的,但它们会做它们应该做的事情。


对于 类级别 项目,元数据相对于静态函数有什么优势?

最佳答案

我假设存在一些与使用元数据相关的性能问题。 describeType 并不便宜,那么您必须从大型 XML 树中提取您想要的内容。

肯定存在与类型相关的问题。如果数据在类中,即使您发送 Object 的第二个示例也会好得多。这些天来,我非常很少在我的代码中的任何地方使用Object,除非我在制作原型(prototype)。而且您的代码可以更简洁:

public static function myStaticFunction():Object
{
return { name1: "value1", name2: "value2" };
}

此外,静态类函数可以与其他静态类函数和静态属性交互:

package
{
public class StaticClass
{
private static const SOME_DATA:int = 0;
private static const SOME_STRING:String = "Hello World";

private static var count:int = 0;

public static function printCount():void
{
trace(SOME_STRING, SOME_DATA, count++);
}
}

}

我可以想象元数据的用途(例如,不需要实现接口(interface)的库代码),我可以理解为什么 Flex 将它们用于该目的(例如,构建远程对象、事件、可绑定(bind)对象的列表),但我会永远不要推荐它们用于正常使用。

关于actionscript-3 - 自定义元数据和静态函数之间的区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1323764/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com