ActionScript 3.0中缺少运算符重载

时间:2008-09-09 00:23:28

标签: flash actionscript-3

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

有解决此问题的好方法吗?

2 个答案:

答案 0 :(得分:12)

不。

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

可悲的是,Flash和Flex中的所有集合都假定身份是衡量所需的唯一标准。

Flex中有一些提示,有人想要同时缓解这个问题,但似乎已经放弃了:有一个名为IUID的界面,它在 Flex开发人员指南中提到过,但不在任何地方使用。甚至连Flex中的集合都没有使用它来确定相等性。既然你要求提供Flash解决方案,那么无论如何它可能都没有帮助你。

我在我的博客上写了更多关于此内容(在Flex的上下文中):Is there no equality?

答案 1 :(得分:4)

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

在我写的关于+ =, - =运算符重载的教程中。但是也可以用==,如果不清楚,我可以写更多关于它的内容。

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

修改

经过测试,看起来+ =, - =的技巧不适用于==运算符(有意义)。抱歉有误导性信息。