`

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的具体作用还不甚清楚,需要以后进一步研究……

分享到:
评论

相关推荐

    自定义Dictionary类如何在类内实现线程同步

    自定义Dictionary类如何在类内实现线程同步自定义Dictionary类如何在类内实现线程同步自定义Dictionary类如何在类内实现线程同步自定义Dictionary类如何在类内实现线程同步自定义Dictionary类如何在类内实现线程同步...

    Android代码-Dictionary

    Dictionary 单词助手,可提供单词中英文的翻译,以及长句子的翻译。另外,可对感兴趣的单词加入本地生词本,以及新建复习计划。做完这个感觉RxJavax真的不是一般的强,Retrofit和greenDAO都提供了对其的支持,让你...

    A Dictionary of Modern English Usage,2nd Edition

    [1] and the 2015 fourth edition, re-titled Fowler's Dictionary of Modern English Usage, edited by Jeremy Butterfield, takes the same approach as the third edition (and only revised some entries)....

    New Oxford English Dictionary

    The Oxford Dictionary of English (ODE) is a single-volume English dictionary published by Oxford University Press, first published in 1998 as The New Oxford Dictionary of English (NODE). The word "new...

    hashtable和dictionary的探讨

    探讨hashtable与dictionary两者的性能及结构区别,并用代码来实现测试。是深入学习数据结构的好的例子。一切源于基础,希望对你有所帮助。

    SAP通用接口代码NCo3.0

    NCo3.0调用RFC,通用接口, 支持泛型和动态类型。 Sap通用接口  一、 接口说明 1. 入参Dictionary, string>,出参泛型 1.1 接口ExecuteString public T ExecuteString(string FunName, Dictionary, string>...

    Unity3d可编辑字典Dictionary脚本

    - Unity的inspector不会在inspector中公开Dictionary类, Tvalue> - Unity不序列化字典信息,因此按下播放或重新加载场景时,收集的所有字典数据都会丢失。 解决方案: - 为MonoBehaviour创建自定义编辑器,利用字典 ...

    Dictionary对象使用方法

    Dictionary对象使用方法 1.Dictionary对象的成员概要 2. 对Dictionary中增加和删除条目 3. 修改键或条目的值

    C# 3.0完全自学宝典 (F)

    CreateDic 演示Dictionary字典的使用实例 第5章(\ch05) 示例描述:学习Windows Form程序和窗体控件的使用。 SimpleForm 第一个窗体应用程序实例 UseButton 演示Button按钮控件的使用实例 UseCheckBox 演示...

    C#实现自定义Dictionary类实例

    主要介绍了C#实现自定义Dictionary类,较为详细的分析了Dictionary类的功能、定义及用法,具有一定参考借鉴价值,需要的朋友可以参考下

    apk文件 UserDictionaryProvider(电视直播视频)

    apk文件 UserDictionaryProvider(电视直播视频)apk文件 UserDictionaryProvider(电视直播视频)apk文件 UserDictionaryProvider(电视直播视频)apk文件 UserDictionaryProvider(电视直播视频)apk文件 User...

    Redis - 3.0.504.zip

    Redis(Remote Dictionary Server ),即远程字典服务,是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。

    VB6字典Dictionary比Collection速度慢几倍

    Dictionary比Collection慢好多; 采用了高精度计时器进行比较,可以精确到微秒; 添加速度快1-2倍 读取快3倍 删除有时快5倍 具体数据量不一样,CPU和电脑不同,结果也不同。 Dictionary,加20万条,用时2371.5783毫秒...

    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 ...

    The Cambridge Dictionary of Statistics 3rd Edition.pdf

    All areas of statistics are covered, theoretical, applied, medical, etc., although, as in any dictionary, the choice of which terms to include and which to exclude is likely to reflect some aspects ...

    C#自定义可序列化的Dictionary类型

    C#自定义可序列化的Dictionary类型

    C#集合Dictionary中按值的降序排列

    集合Dictionary中按键排序较容易实现,本例实现了C#集合Dictionary中按值的降序排列。

    绿色版PocketDOS 和 绿色版TC3.0

    ASSOC CPP - Association class (used by dictionary class) BABSTARY CPP - Source file for classlibs BDICT CPP - Source file for Classlibs BSORTARY CPP - Source file for classlibs BTREE CPP - Tree ...

    Portable Eng-Mm-Eng Dictionary

    是一个英文-缅文双解词典,Eng-Myanmar-Eng Dictionary

Global site tag (gtag.js) - Google Analytics