Frage

Eines der Dinge, die ich in ActionScript am meisten vermisse, ist das Fehlen einer Operatorüberladung, insbesondere ==.Ich umgehe dieses Problem, indem ich meinen Klassen eine „Compare“-Methode hinzufüge, aber das hilft in vielen Fällen nicht, beispielsweise wenn Sie Dinge wie das integrierte Wörterbuch verwenden möchten.

Gibt es eine gute Möglichkeit, dieses Problem zu umgehen?

War es hilfreich?

Lösung

Nein.

Aber es schadet nicht, etwas hinzuzufügen equals Methoden für Ihre eigenen Klassen.Ich versuche, es nie zu benutzen == beim Vergleichen von Objekten (dasselbe gilt für ===, was für Objekte dasselbe gilt), da es nur prüft Identität .

Leider gehen alle Sammlungen in Flash und Flex davon aus, dass Identität das einzige erforderliche Maß für Gleichheit ist.

Es gibt Hinweise in Flex, dass jemand dieses Problem einst lindern wollte, aber es scheint, als hätte man es aufgegeben:Es gibt eine Schnittstelle namens IUID, und es wird in der erwähnt Flex-Entwicklerhandbuch , aber es wird nirgendwo verwendet.Nicht einmal die Sammlungen in Flex verwenden es, um die Gleichheit zu bestimmen.Und da Sie nach einer Lösung für Flash fragen, hat Ihnen diese möglicherweise sowieso nicht geholfen.

Ich habe dazu (im Kontext von Flex) noch etwas mehr auf meinem Blog geschrieben: Gibt es keine Gleichberechtigung?.

Andere Tipps

Ja, es ist machbar (aber seien Sie vorsichtig, es ist hackig): http://filimanjaro.com/2012/operators-overloading-in-as3-javascript-too-%E2%80%93-workaround/

Im Tutorial habe ich über die Überladung von Operatoren +=, -= geschrieben.Aber es ist auch mit == möglich, ich kann mehr darüber schreiben, wenn es nicht klar ist.

Ah, der Ansatz hat einige Nachteile (in seltenen Fällen kann er sogar gefährlich sein).Denken Sie zweimal darüber nach, bevor Sie es in einer Produktion verwenden.

BEARBEITEN:

Nach Tests scheint es, dass der Trick mit +=, -= nicht auf den Operator == anwendbar ist (was Sinn macht).Entschuldigung für die irreführenden Informationen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top