`

AS3.0的Dictionary类

    博客分类:
  • AS3
 
阅读更多

AS3中的Dictionary类(flash.utils.Dictionary)是一个新的AS类。Dictionary类和Object唯一的区别在于:Dictionary对象可以使用非字符串作为键值对的键。例如:

var obj:Object = new Object();
obj["name"] = 1; // 键是字符串"name"
obj[1] = 2; // 键是1 (被转换成字符串"1")
obj[new Object()] = 3; // 键是new Object(),被转传成字符串"[object Object]"

for (var prop:String in obj) {
      trace(prop); // 输出:[object Object], 1, name
      trace(obj[prop]); // 输出:3, 2, 1
}



也就是说,无论用什么类型的变量作为键,都将被转换成字符串。同时,如果你使用了不同的对象作为键,都会被转换成字符串"[object Object]"作为键,因此而指向了同一个数据。例如:

var a:Object = new Object();   
var b:Object = new Object();   

var obj:Object = new Object();   
obj[a] = 1; // obj["[object Object]"] = 1;   
obj[b] = 2; // obj["[object Object]"] = 2;   

for (var prop:String in obj) {   
      trace(prop); // traces: [object Object]   
      trace(obj[prop]); // traces: 2   
}



Dictionary类将没有这个限制,你可以将键设置成任何一种数据类型。例如:

import flash.utils.Dictionary;

var a:Object = new Object();
var b:Object = new Object();

var dictictionary = new Dictionary();
dict[a] = 1; // dict[a] = 1;
dict[b] = 2; // dict[b] = 2;

for (var prop:* in dict) {
      trace(prop); // traces: [object Object], [object Object]
      trace(dict[prop]); // traces: 1, 2
}



注意:

1、虽然在trace的时候,输出的还是[object Object],但是这个结果是对象的toString的结果。在Dictionary对象中,代表的是不同的对象引用。

2、这里的prop的类型是*。这是很重要的,因为dict对象中的键可能是任何数据类型的。


以下是本人对Dictionary与Object的不同之处的一个小结:


1、Object的键必须是字符串,或表示字符串的表达式(变量或函数),若不是字符串的表达式,则将调用toString()方法,将其转化为字符串;

2、与Object不同的是,Dictionary使用的键是对象的引用,而不是字符串,且非原始对象键调用之前是通过全等运算符(===)来进行判断,并不会将数据类型强制转换之后再进行判断。

但是,对于Dictionary的具体作用还不甚清楚,需要以后进一步研究……

分享到:
评论

相关推荐

    AS-打地鼠教程.zip

    基础数据类型如Number、Boolean、String等都是类,还有Array、Dictionary等复杂的数据结构。AS3的事件模型也更为成熟,通过Event类和EventListener接口处理程序中的事件响应。 在打地鼠游戏中,关键的编程概念包括...

    ActionScript 3.0 Programming Overview

    此外,AS3还引入了`Dictionary`类,用于实现键值对存储。 示例:创建一个数组并遍历其中的元素: ```actionscript var arr:Array = ["apple", "banana", "orange"]; for (var i:uint = 0; i ; i++) { trace(arr[i...

    FriendsofED.Object.Oriented.ActionScript.3.0.Jul.2007

    1. 类与对象:ActionScript 3.0引入了严格的类定义和对象实例化机制,这使得代码更加结构化和可预测。类是对象的蓝图,而对象则是类的实例。通过类,开发者可以定义数据结构(属性)和行为(方法)。 2. 封装:面向...

    Adobe+Flash+Professional+CS5+的+ActionScript+3.0+参考

    7. **数据类型和结构**:AS3支持基本数据类型(如Number, String, Boolean)以及复杂类型(如Array, Object, Dictionary)。还有强类型的数组类,如Array和Vector,其中Vector提供类型安全的数组操作。 8. **错误...

    ActionScript3.0编程

    - **数组和集合**:提供了更高效的数组操作和集合类,如Array、Vector和Dictionary等。 - **迭代器和枚举器**:支持更灵活的循环结构,如for-in循环。 ##### Flash Player API功能 - **改进的图形API**:包括Shape...

    Linux Dictionary

    header), line numbering, symbol substitution as well as pretty printing for a wide range of programming languages. Historically, a2ps started as a text to PostScript converter, but thanks to powerful ...

    flash语言菜鸟教程

    ActionScript 3.0(AS3)是目前最广泛使用的版本,它在性能和编程模型上都有显著提升。 **ActionScript语法** 1. **变量声明**:在AS中,我们使用`var`关键字来声明变量,例如`var myVariable:Type;`。类型声明是...

    CanFestival3. Version 3.0 The CANOpen stack manual

    ### CanFestival 3.0 – CANOpen Stack Manual #### 1. Introduction CanFestival 3.0 is an Open Source (LGPL) CANOpen framework designed to provide a platform-independent CANOpen stack. This stack can ...

    sap ABAP tool 下载源程序及自定义查询

    * 3.0 New version - allows you to download files in HTML format as * well as text format. * 3.1 Added the ability to download nested include programs. * 3.2 Added the ability to download custom ...

    创建60FPS高效运行的游戏

    - **使用AS3.0**:相比之前的版本,AS3.0提供了更好的性能和更多的功能。 - **类型定义**:为变量和函数参数定义类型可以提高编译器优化代码的能力。 - **向量化**:优先使用`Vector.<type>`而非`Array`或`...

    适用于所有人的Python:探索Python 3中的数据Python for Everybody: Exploring Data in Python 3

    书籍的印刷历史记录了两个重要的时间点,分别是2016年7月5日的完整Python 3.0版本和2015年12月20日的初版Python 3.0。 最后,书籍还包含关于作者认为的商业和非商业用途的定义以及许可豁免的详细信息,这些内容都可...

    VB6-to-VBNET

    在VB.NET中,集合类更加丰富和强大,包括List、Dictionary等。这些集合类提供了高效的元素存储和访问方式。 例如,创建一个字符串列表: ```vb.net Dim myList As New List(Of String) myList.Add("Item 1") ...

    简单计算加班补贴的vb程序

    Dim overtimeRates As New Dictionary(Of String, Double) From { {"平日", 1.5}, {"周末", 2.0}, {"节假日", 3.0} } If overtimeRates.ContainsKey(overtimeType) Then overtimeRate = overtimeRates...

    flash考试评语

    4. **数组和字典数据结构**:为了存储评语和对应的分数范围,开发者可能会使用数组或者字典(Object或Dictionary类)。数组可以用来存储预设的评语,而字典则可以关联分数与评语,方便查找。 5. **事件驱动编程**:...

    Python教程

    Python 3.0 引入了大量的向后不兼容的更改,导致为2.7编写的代码可能无法在3.4下运行,反之亦然。本文档将专注于Python 3.4版本的使用。 为了检查你的Python版本,可以在命令行中输入`python --version`命令。 ###...

    使用Python脚本对Linux服务器进行监控的教程

    '''Return the information in /proc/stat as a dictionary.''' CPUinfo=OrderedDict() with open('/proc/stat') as f: for line in f: if line.startswith('cpu '): values = line.split() total = sum(map...

    Python 稀疏矩阵-sparse 存储和转换

    import scipy.sparse as sparse # 创建一个10x5的DOK矩阵 a = sparse.dok_matrix((10, 5)) # 添加元素 a[2, 3] = 1.0 a[3, 3] = 2.0 a[4, 3] = 3.0 # 输出非零元素的位置和值 print("Keys:", list(a.keys())) ...

    The Swift Programming Language 中文版

    #### 一、Swift 3.0更新要点 - **版本不兼容性**:Swift 3.0是自Swift开源以来的第一个重大版本更新,它不再兼容先前的Swift 2.2和Swift 2.3版本。 - **更新详情**:Swift 3.0引入了一系列的新特性以及对现有特性的...

    CS231n课程笔记翻译:Python Numpy教程 - 知乎专栏1

    课程中使用的版本是2.7,需要注意的是,从2.7到3.0有一些不向后兼容的改变,因此2.7的代码可能无法在3.4中运行。要检查Python的版本,可以使用命令`python --version`。 Python的基本数据类型包括整型(int)、浮点...

    python3.6.5参考手册 chm

    PEP 372: Adding an Ordered Dictionary to collections PEP 378: Format Specifier for Thousands Separator PEP 389: The argparse Module for Parsing Command Lines PEP 391: Dictionary-Based Configuration...

Global site tag (gtag.js) - Google Analytics