AS3中的Dictionary类(flash.utils.Dictionary)是一个新的AS类。
Dictionary类和Object唯一的区别在于:
Dictionary对象可以使用非字符串作为键值对的键,而Object只能使用字符串做为键值对的键。
以下用两个简单例子来说明具体的差别:
1、使用Object:
使用Object
<!--<br/ /><br/ />Code highlighting produced by Actipro CodeHighlighter (freeware)<br/ />http://www.CodeHighlighter.com/<br/ /><br/ />-->var a:Object = {val:135}
var b:Object = {val:248};
var obj:Object = new Object();
obj[a] = 1; // 键为对象a,值为数字1
obj[b] = 2; // 键为对象b,值为数字2
for(var p:Object in obj)
{
trace(p); // 输出键
trace(obj[p]); // 输出此键对应的值
}
输出结果:
<!--<br/ /><br/ />Code highlighting produced by Actipro CodeHighlighter (freeware)<br/ />http://www.CodeHighlighter.com/<br/ /><br/ />-->[object Object]
2
结果分析:因为前面说了Object的键只能使用字符串,所以当我们使用Object来做键的时候,都会被转为[object Object],
obj[a] = 1;
obj[b] = 2;
所以在这里,这两句代码的实际效果是这样的
obj["[object Object]"] = 1;
obj["[object Object]"] = 2;
当执行第二句代码的时候,实际上就是更新前面一个的值,所以才输出这样的结果也就不奇怪了。
2、使用Dictionary:
使用Dictionary
<!--<br/ /><br/ />Code highlighting produced by Actipro CodeHighlighter (freeware)<br/ />http://www.CodeHighlighter.com/<br/ /><br/ />-->var a:Object = {val:135}
var b:Object = {val:248};
var obj:Dictionary = new Dictionary();
obj[a] = 1; // 键为对象a,值为数字1
obj[b] = 2; // 键为对象b,值为数字2
for(var p:Object in obj)
{
trace(p); // 输出键
trace(obj[p]); // 输出此键对应的值
trace(p["val"]); // 输出键(Object)的val属性的值
}
输出结果:
<!--<br/ /><br/ />Code highlighting produced by Actipro CodeHighlighter (freeware)<br/ />http://www.CodeHighlighter.com/<br/ /><br/ />-->[object Object]
1
135
[object Object]
2
248
结果分析:因为Dictionary和Object的区别所在,可以使用任意类型数据做键,所以能得到我们想要的结果。
所在在平时我们使用Object或其子类的时候,如果键是字符串,也可以达到键值对的效果,
但当键需要Object时,就需要Dictionary了。
相关推荐
"iOS对象转字典 object2Dictionary"这个话题聚焦于如何将Objective-C或Swift中的对象转换成字典(NSDictionary或Swift的Dictionary类型),进而可能进一步转化为JSON格式。这种转换在序列化和反序列化过程中扮演着...
6. **哈希表(Hash Table)**:AS3的Object类实质上就是一个简单的哈希表,通过键值对快速查找和存取数据。如果需要更复杂、性能更高的哈希表,可以自定义数据结构,例如使用Dictionary类,它允许将任何类型作为键,...
在AS3(ActionScript 3)中,资源加载管理是一个重要的概念,特别是在开发富互联网应用程序(RIA)或游戏时。白鹭引擎(Egret Engine)是一个流行的2D游戏开发框架,它提供了一套完善的资源管理系统,使得资源的加载...
9. **第三方库兼容**:如果AS3CBLibrary与其它流行的库如Flex SDK或Flash CS等兼容,它可以帮助开发者更好地整合各种资源。 10. **文档和示例**:一个完整的库应该提供详尽的API文档和示例代码,帮助开发者理解和...
在AS3中,一切皆为对象,所有的类都继承自Object类。基础数据类型如Number、Boolean、String等都是类,还有Array、Dictionary等复杂的数据结构。AS3的事件模型也更为成熟,通过Event类和EventListener接口处理程序中...
在编程领域,`contains` 和 `Dictionary` 是两个非常重要的概念,特别是在面向对象的语言中,如 ActionScript。这里我们将深入探讨这两个概念,并结合提供的 `testAs2.as` 文件进行学习。 首先,`contains` 是一个...
字典是键值对的集合,与JavaScript的对象类似,但AS中的Dictionary允许非字符串作为键,提供了更灵活的数据存储。 9. 树(Tree) 树数据结构在AS中需要自定义实现,如二叉树或AVL树。树适用于需要快速查找、插入和...
总结来说,Object和Dictionary在AS3中提供了不同的数据存储和检索机制。Object更适合简单的键值对存储,而Dictionary则适用于需要基于对象引用的键值对操作,尤其在处理复杂数据结构时。理解和熟练运用这两种数据...
Dim d As New Dictionary Set d = CreateObject("scripting.Dictionary") d.Add "张三", "123" d.Add "李四", "456" '对象.新增 Key,Item '注意:在本地窗口中可能看不到Item条件。 'Keys方法 '返回一个数组,...
AS中的Object类可以作为简单的哈希表,但其键必须为字符串类型。如果需要非字符串键,可以使用flash.utils.IDictionary接口或第三方库如dslib_0.9.5_beta提供的哈希表实现。 树(Tree)数据结构,如二叉树,用于...
Static d As Object Static i As Long Dim iDup As Integer Dim sField ' ---------------------------------------- '这里填写需要检查的字段名 sField = [A] ' ---------------------------------------- If ...
在提供的实例“通过Dictionary对象删除文档.xlsm”中,可能是通过创建一个`Dictionary`来存储某些数据的键(如单元格地址或特定标识符),然后遍历工作表,如果找到与字典中的键匹配的单元格,就删除对应的行或清除...
在台达PLC中,我们需要配置相关的CANOPEN节点ID、PDO(Process Data Object)映射以及SDO(Service Data Object)参数,以便正确地与步进电机驱动器通信。 在实际应用中,PLC通过发送PDO报文来改变步进电机的运行...
### AS3编码规范详解 #### 一、概述 AS3编码规范是一套旨在提升Adobe Flash平台应用程序质量和可维护性的指导原则。本规范由Artlee在2010年提出,结合了作者多年来的Flash项目开发及管理经验,吸收了驼峰命名法与...
字典在AS3中是通过flash.utils.Dictionary类实现的,它提供了更高效的查找方式,尤其适合关联大量数据。 7. 集合(Set) 集合是一种不包含重复元素的数据结构,AS3中的flash.utils.Set类提供了这个功能。集合的元素...
2. **数据类型**:AS3支持基本数据类型如`Number`(浮点数和整数)、`String`、`Boolean`、`Object`等,以及复合数据类型如`Array`和`Dictionary`。 3. **函数定义**:函数在AS中用`function`关键字定义,例如`...
ExtensionDictionary AS Autodesk.AutoCAD.DatabaseServices.ObjectId 可读不可写 FileName AS System.String 可读可写 FlagBits AS System.Byte 可读可写 Font AS Autodesk.AutoCAD.GraphicsInterface....
7. **数据类型和结构**:AS3支持基本数据类型(如Number, String, Boolean)以及复杂类型(如Array, Object, Dictionary)。还有强类型的数组类,如Array和Vector,其中Vector提供类型安全的数组操作。 8. **错误...
在拼图游戏的实现过程中,还会涉及到一些其他关键概念,如时间轴控制(Timeline Control)、对象实例化(Object Instantiation)以及数组和对象字典(Array和Object Dictionary)的使用,这些都对于管理拼图块的状态...