首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在ActionScript 3中使用Object Equality创建"真正的"HashMap实现

在ActionScript 3中,使用Object Equality创建"真正的"HashMap实现需要继承Dictionary类并重写其中的一些方法。以下是一个示例:

代码语言:as3
复制
import flash.utils.Dictionary;

class HashMap extends Dictionary {
    public function HashMap(weakKeys:Boolean = false) {
        super(weakKeys);
    }

    override public function set(key:Object, value:Object):void {
        if (key == null) {
            throw new ArgumentError("Key cannot be null.");
        }
        super.set(key, value);
    }

    override public function get(key:Object):* {
        if (key == null) {
            throw new ArgumentError("Key cannot be null.");
        }
        return super.get(key);
    }

    override public function hasOwnProperty(key:Object):Boolean {
        if (key == null) {
            throw new ArgumentError("Key cannot be null.");
        }
        return super.hasOwnProperty(key);
    }

    override public function delete(key:Object):Boolean {
        if (key == null) {
            throw new ArgumentError("Key cannot be null.");
        }
        return super.delete(key);
    }
}

在这个示例中,我们创建了一个名为HashMap的类,它继承自Dictionary类。我们重写了set、get、hasOwnProperty和delete方法,以确保它们可以处理null键。此外,我们还添加了一个构造函数,它接受一个布尔值参数,用于指定是否使用弱键。

使用这个HashMap类,您可以像使用真正的HashMap一样使用它。例如:

代码语言:as3
复制
var map:HashMap = new HashMap();
map.set("key1", "value1");
map.set("key2", "value2");

trace(map.get("key1")); // 输出 "value1"
trace(map.hasOwnProperty("key2")); // 输出 true

map.delete("key1");
trace(map.hasOwnProperty("key1")); // 输出 false

请注意,虽然这个实现具有HashMap的基本功能,但它可能不适用于所有用例。例如,它不支持迭代器或自定义哈希函数。如果您需要更高级的功能,可以考虑使用像OpenFlamework或Flambe这样的库,它们提供了更完整的哈希映射实现。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

用ECMAScript4 ( ActionScript3) 实现Unity热更新 -- 脚本中使用MonoBehaviour

继上次分析了热更新Demo后,这次来介绍如何在热更新代码中使用MonoBehaviour。 MonoBehaviour挂载到GameObject对象上脚本基类。...本章目标:        用脚本创建一个MonoBehaviour。并挂载到某个物体上,Start方法中使用协程加载 baidu 首页html,然后将它html代码显示到文本框上。...可以使用如下办法,来确定某个类在哪个dll里:VS中,写下要确定这个类名字。 右键点击刚才写类名,弹出菜单中选择速览定义,即可查看到这个类型所在dll。 ?...如此,即可在热更新项目中使用WWW相关类型 <!...如此,即实现脚本中使用MonoBehaviour。

1.3K130

ActionScript语言基础 原

支持比JavaSctipt所支持更新ECMAScript标准实现版本。...Flex3中有几本数据类型概念,它们Flex4都被封装成了类,放在顶层包中,顶层包是默认可用,所以仍然可以随时使用它们。                 ...Array Boolean Class Date int Number Object String unit Vector XML XMList 使用顶层类不需要事先使用import语句导入包,即可直接创建实例...//另外一种输出键值对方式就是直接使用Object对象 var $map:Object = new Object(); var $map:Object = {item1:"leo", item2:"xu...将ActionScript代码放到独立于MXML文件文件中: 可以将ActionScript代码独立放到.as后缀文件中; 然后再MXML文件中,使用如下代码引入该as文件: <fx:Script

81720
  • 5种将死编程语言

    虽然针对自己CLR运行,微软创建了C#,但是它工程师们另外还创建了一个盖茨深爱BASIC语言版本,命名为Visual Basic.NET。...我之所以将它们包含进来是因为如果你想要使用它们,就必须安装Adobe自己ECMAScript版本,即ActionScript。...ActionScriptECMAScript(这是JavaScript实现标准官方名称)中增加了一些细节;但是除了Adobe Flash,其他地方几乎没有ActionScript用武之地。...你使用Flash不?乔布斯非常讨厌它,并且也不允许iPhone使用它。然后随着iPhone(以及随后iPad)逐渐普及,Web开发人员不得不创建不必依赖于Flash网站。...但是,如果你去Embarcadero公司网站看看,你会发现他们主要是促进Delphi’s C++ 支持。因此,换言之就是,Object Pascal已然逝去了。

    2.5K20

    JavaScript与ActionScript3那些事

    引擎进行解析、执行,ActionScript3需要Adobeflash player(AVM2)进行解析; c)、ActionScript3.0引入OOP概念,可使用extends实现继承,而JavaScript...只能使用基于原型方式来实现; d)、应用领域有所不同:JavaScript目前主要应用于web页面(PC端、手机终端等),而ActionScript3.0在网页游戏上应用则比较多; 题外话(个人想法仅供参考...):单从报酬上来讲,as3浮动比js要大,如果你参与开发一款网页游戏月充值流水超过了五百万(到各大页游平台上看看开服量,单服月充值按5~10W来算,如果开到100组,广告成本页游大概2~15元/注册人...” 开始讲起,先使用JS判断当前浏览器是否安装了flash player,然后获取其版本,是否满足最低flash player版本,然后动态创建dom节点,并追加到页面中。...可直接获取 如果使用as3“壳”加载flex生成swf,假定as3“壳”中定义如下代码: public var param_obj:Object; param_obj = this.loaderInfo.parameters

    1.2K10

    5 种前途迷茫编程语言

    虽然针对自己CLR运行,微软创建了C#,但是它工程师们另外还创建了一个盖茨深爱BASIC语言版本,命名为Visual Basic.NET。...我之所以将它们包含进来是因为如果你想要使用它们,就必须安装Adobe自己ECMAScript版本,即ActionScript。...ActionScriptECMAScript(这是JavaScript实现标准官方名称)中增加了一些细节;但是除了Adobe Flash,其他地方几乎没有ActionScript用武之地。...你使用Flash不?乔布斯非常讨厌它,并且也不允许iPhone使用它。然后随着iPhone(以及随后iPad)逐渐普及,Web开发人员不得不创建不必依赖于Flash网站。...但是,如果你去Embarcadero公司网站看看,你会发现他们主要是促进Delphi’s C++ 支持。因此,换言之就是,Object Pascal已然逝去了。

    1.1K20

    2020年,6种将死编程语言!

    虽然针对自己CLR运行,微软创建了C#,但是它工程师们另外还创建了一个盖茨深爱BASIC语言版本,命名为Visual Basic.NET。...我之所以将它们包含进来是因为如果你想要使用它们,就必须安装Adobe自己ECMAScript版本,即ActionScript。...ActionScriptECMAScript(这是JavaScript实现标准官方名称)中增加了一些细节;但是除了Adobe Flash,其他地方几乎没有ActionScript用武之地。...你使用Flash不?乔布斯非常讨厌它,并且也不允许iPhone使用它。然后随着iPhone(以及随后iPad)逐渐普及,Web开发人员不得不创建不必依赖于Flash网站。...但是,如果你去Embarcadero公司网站看看,你会发现他们主要是促进Delphi’s C++ 支持。因此,换言之就是,Object Pascal已然逝去了。

    1.5K20

    Dart - 抽象类实例化

    一、抽象类使用 Dart 抽象类可以只声明方法,也可以有具体方法实现,但是不能直接用抽象类来创建实例,只能被继承使用或者充当接口。...接口: 必须实现抽象类中声明所有方法 二、抽象类实例化 上面提到了抽象类不能用于创建实例,但是有没有发现,Dart 提供 Map 和 List 就是抽象类,却可以直接使用它们创建出一个实例对象 final...在这个地方,Map 工厂方法并没有具体实现,而只是工厂构造方法前加了一个关键字 external。...int _hashCode(e) => _hasher(e); bool _equals(e1, e2) => _equality(e1, e2); bool containsKey(Object...很遗憾不行,因为抽象类中定义了工厂构造方法后,子类中不能定义除工厂构造方法外其它构造方法了,会报错~ 总结一下: 抽象类无法直接创建实例,但是可以通过实现工厂构造方法来间接实现抽象类实例化!

    2.8K41

    用ECMAScript4 ( ActionScript3) 实现Unity热更新 -- 使用原型链和EventTrigger

    原型链是JS必备,作为ECMAScript4,原型链也是支持。 特别说明,ActionScript3是支持完整面向对象继承支持,原型链只某些非常特殊情况下使用。...如果您决定使用原型链,那么必须舍弃编译时类型检查。如果使用强类型,则编译器会认为动态添加成员不存在,而提示编译错误。解决办法为去掉变量类型说明,或者将变量强制转换成Object。...我们将这篇文章中介绍使用不可热更C#代码做监听,改写为ActionScript3实现。 工程说明 新建一个Untiy工程,并且创建AS3热更新项目。...如果不会创建,请参考这里 HotFixDemoScene1上添加一个Image。 image.png 本次代码需要使用 RectTransformUtility 这个类。...ActionScript3是没有ref和out关键字, * 因此这里使用RefOutStore来接收返回参数。

    1.3K60

    Effective Java 2.0_中英文对照_Item 8

    在这种情况下,从Object继承equals实现就足够了。...Sun当前实现中,它碰巧会返回false,但那仅是一种实现方案。另一种实现中,它也可能很容易返回true或抛出一个运行时异常。...当且仅当它们具有相同实现类时,上面的代码比较对象时才会有效。虽然这不是很糟糕,但结果是不可接受。...进行转换之前,equals方法必须使用instanceof操作符来检查它参数是否是正确类型: @Override public boolean equals(Object o) { if...有时候,它是这个类实现一些接口。如果一个类实现了一个接口,这个接口提炼了equals约定来允许比较那些实现了这个接口类,那么就使用接口。

    49740

    Java学习笔记——集合

    & 引用数据类型) 和集合 (引用数据类型),用数组存储对象弊端有:一旦创建,其长度不可变;数组中真正存储对象个数不可知,除非自定义类。...向TreeSet中添加必须是同一个类对象,并且这个类必须实现Comparable接口并实现compareTo(Object obj)方法(或使用Comparator),TreeSet中两个对象通过该方法返回值来比较大小...// 1.创建一个实现了Comparator接口类对象 Comparator comparator = new Comparator() { @Override public int...o) Compares the specified object with this map for equality....TreeSet是排序集合,所以得有一个比较操作,有两种方式现实,一种是实现Comparable并实现其中compareTo方法,另一种是创建一个实现Comparator类对象并将其作为实参传给TreeSet

    26170

    吐血整理!2万字Java基础面试题(带答案)请收好!

    HashTable 方法是 Synchronized ,而 HashMap 不是,多个线程访问 Hashtable 时,不需要自己为它方法实现同步,而 HashMap 就必须为之提供外同步。...HashMap和HashSet实现原理 HashSet实现很简单,内部有一个HashMap成员变量,所有的Set相关操作都转换为了对HashMap操作。...Thus you will be testing for object equality and not functional equality....Java下实现swap函数可以通过反射实现,或者使用数组。 1.17 一个ArrayList循环过程中删除,会不会出问题,为什么。 会有问题,不过需要分情况讨论。...利用反射创建数组 数组Java里是比较特殊一种类型,它可以赋值给一个Object Reference。

    39331

    吐血整理!2万字Java基础面试题(带答案)请收好!

    HashTable 方法是 Synchronized ,而 HashMap 不是,多个线程访问 Hashtable 时,不需要自己为它方法实现同步,而 HashMap 就必须为之提供外同步。...HashMap和HashSet实现原理 HashSet实现很简单,内部有一个HashMap成员变量,所有的Set相关操作都转换为了对HashMap操作。...Thus you will be testing for object equality and not functional equality....Java下实现swap函数可以通过反射实现,或者使用数组。 1.17 一个ArrayList循环过程中删除,会不会出问题,为什么。 会有问题,不过需要分情况讨论。...利用反射创建数组 数组Java里是比较特殊一种类型,它可以赋值给一个Object Reference。

    34410
    领券