Question

L'une des choses qui me manque le plus dans ActionScript est l'absence de surcharge des opérateurs, en particulier ==.Je contourne en quelque sorte ce problème en ajoutant une méthode "Comparer" à mes cours, mais cela n'aide pas dans de nombreux cas, par exemple lorsque vous souhaitez utiliser des éléments tels que le dictionnaire intégré.

Existe-t-il un bon moyen de contourner ce problème ?

Était-ce utile?

La solution

Non.

Mais ça ne fait pas de mal d'ajouter equals méthodes à vos propres classes.J'essaie de ne jamais utiliser == lors de la comparaison d'objets (il en va de même pour ===, ce qui est la même chose pour les objets) puisqu'il vérifie uniquement identité .

Malheureusement, toutes les collections Flash et Flex supposent que l'identité est la seule mesure d'égalité nécessaire.

Il y a des indices dans Flex selon lesquels quelqu'un voulait atténuer ce problème à un moment donné, mais il semble que cela ait été abandonné :il y a une interface appelée IUID, et il est mentionné dans le Guide du développeur Flex , mais il n’est utilisé nulle part.Même les collections de Flex ne l'utilisent pas pour déterminer l'égalité.Et puisque vous demandez une solution pour Flash, cela ne vous a peut-être pas aidé de toute façon.

J'en ai écrit davantage à ce sujet (dans le contexte de Flex) sur mon blog : N'y a-t-il pas d'égalité ?.

Autres conseils

Oui, cela peut être fait (mais attention, c'est hacky) : http://filimanjaro.com/2012/operators-overloading-in-as3-javascript-too-%E2%80%93-workaround/

Dans le tutoriel, j'ai écrit sur la surcharge des opérateurs +=, -=.Mais c'est aussi possible avec ==, je peux en écrire plus si ce n'est pas clair.

Ah, cette approche présente certains inconvénients (dans de rares cas, elle peut même être dangereuse).Réfléchissez à deux fois avant de l'utiliser dans une production.

MODIFIER:

Après les tests, il semble que l'astuce avec +=, -= ne s'applique pas à l'opérateur == (ce qui a du sens).Désolé pour les informations trompeuses.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top