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

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

有帮助吗?

解决方案

没有。

但添加也没什么坏处 equals 您自己的类的方法。我尽量不使用 == 比较对象时(同样适用于 ===, ,这对于对象来说是一样的),因为它只检查 身份 .

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

Flex中有暗示曾经有人想缓解这个问题,但似乎已经被放弃了:有一个接口叫 宫内节育器, ,并且在 Flex 开发人员指南 ,但它没有在任何地方使用。甚至 Flex 中的集合也不使用它来确定相等性。既然您正在寻求 Flash 的解决方案,那么无论如何它可能对您没有帮助。

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

其他提示

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

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

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

编辑:

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top