ActionScript 3.0 中缺少运算符重载
-
09-06-2019 - |
题
我在 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/
在教程中我写了关于 +=、-= 运算符重载的内容。但也可以使用 == ,如果不清楚的话我可以写更多相关内容。
啊,这种方法有一些缺点(在极少数情况下甚至可能很危险)。在制作中使用它之前请三思。
编辑:
经过测试,+=、-= 的技巧似乎不适用于 == 运算符(这是有道理的)。抱歉提供误导性信息。
不隶属于 StackOverflow