15

我在 ActionScript 中最怀念的一件事是缺少运算符重载,尤其是 ==。我通过在我的类中添加一个“比较”方法来解决这个问题,但这在很多情况下并没有帮助,比如当你想使用内置字典之类的东西时。

有没有解决这个问题的好方法?

4

2 回答 2

12

没有。

但是将equals方法添加到您自己的类中并没有什么坏处。我尝试== 在比较对象时从不使用(对于对象也是如此===,对于对象也是如此),因为它只检查身份

遗憾的是,Flash 和 Flex 中的所有集合都假定身份是唯一需要的平等衡量标准。

Flex中有提示说有人想一次性缓解这个问题,但好像被放弃了:有一个接口叫IUID,在Flex开发者指南中提到过,但是没有在任何地方使用。甚至 Flex 中的集合也没有使用它来确定相等性。而且由于您正在寻求 Flash 的解决方案,它可能对您没有任何帮助。

我在我的博客上写了更多关于这个(在 Flex 的上下文中)的内容:没有平等吗?.

于 2008-09-09T06:52:00.353 回答
4

是的,它可以做到(但要小心,它的hacky): http: //filimanjaro.com/2012/operators-overloading-in-as3-javascript-too-%E2%80%93-workaround/

在教程中,我写了关于 +=、-= 运算符重载的文章。但是==也可以,如果不清楚,我可以写更多。

啊,这种方法有一些缺点(在极少数情况下甚至可能很危险)。三思而后行,在生产中使用它之前。

编辑:

经过测试,似乎 +=, -= 的技巧不适用于 == 运算符(这是有道理的)。抱歉误导信息。

于 2012-01-24T17:02:46.190 回答