当你执行"for ... in"循环时,它将迭代一个Dictionary例如.我想知道如何跟踪内部以及如何访问它?
我认为Dictionary类存储对第一个项目的引用,但我想访问它并检查但我无法弄清楚如何.这有点高级,请问有什么想法吗?
谢谢,鲁迪
ActionScript的Dictionary类实际上不是有序集合.换句话说,它实际上没有"第一项".当然,如果使用for
or for each
循环遍历项目,则必须首先访问其中一个项目,以便您可以执行以下操作:
var firstKey:*; var firstValue:*; for (firstKey in myDictionary) { firstValue = myDictionary[firstKey]; break; } // variables now hold the "first" key and value, or undefined if the dictionary is empty.
但是,Dictionary类没有关于项目顺序的合同,即使订单是可预测的(字母键,首次分配==首先返回等),我认为它是一个可以在播放器版本之间更改的实现细节.此外,该类不会公开您可以访问的任何内部地图.
如果您真的关心控制迭代顺序(或者只是想知道它在ActionScript中的处理方式),我建议您查看Proxy类.通过扩展它并覆盖一些方法,您可以控制项目迭代的顺序,以及其他一些很酷的东西.(与迭代相关的方法是nextName(),nextNameIndex()和nextValue(),官方文档中有一个示例.)这样,您可以创建自己的类似于Dictionary的集合类,它也可以为项目编制索引.
或者,您可以查看第三方Collection/Iterator包,它们可能已经具有您需要的内容.