我一直在使用Object作为一种通用关联数组(map / dictionary)的方法,因为AS3 / Flex在这方面似乎非常有限。但我真的不喜欢它来自C ++ / Java / C#背景。有没有更好的方法,我没有遇到过一些标准课......这在AS3中甚至被视为好/坏?
答案 0 :(得分:5)
是的,Actionscript使用Object
作为通用关联容器,被认为是执行此操作的标准方法。
还有一个Dictionary
课程,flash.utils.Dictionary
。
不同之处在于Dictionary
可以使用任何值作为键,包括对象,而Object
使用字符串键。对于大多数用途,Object
是首选,因为它更快并涵盖了大多数用例。
您可以在此处查看Object
的详细信息:http://livedocs.adobe.com/flash/9.0/ActionScriptLangRefV3/Object.html
和Dictionary
此处:http://livedocs.adobe.com/flash/9.0/ActionScriptLangRefV3/flash/utils/Dictionary.html
以及它们之间的区别:http://livedocs.adobe.com/flex/3/html/help.html?content=10_Lists_of_data_4.html
答案 1 :(得分:2)
对于地图和其他结构,我担心Object
或Dictionary
没有原生替代方案。至于标准,它取决于一个人如何定义标准,但是如果你寻找Java样式集合,你可能想要查看几个已知的库。
喜欢这个:
http://sibirjak.com/blog/collections/as3commons-collections/
另外,你可以看一下这个问题,它链接到几个ds库(包括上面的一个)。
我不会说使用Objects无论是好的还是坏的做法。在一般情况中,它们比任何Actionscript替代品都快(因为它们是原生的),但功能较少。有时提供的功能足够好。有时,它有点简单,所以更有条理的东西可以帮助你摆脱代码中的低级细节,并专注于你的“域逻辑”,可以这么说。
最后,所有这些库都通过对象,字典和数组(或向量)实现其数据结构。所以,如果原生物体对你的需求很好,我会说跟他们一起去。另一方面,如果您发现自己基本上重写了一个特殊的集合,或许使用其中一个库是明智的选择。