Non.
Mais il ne fait pas de mal à ajouter equals
méthodes pour 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 seulement identité. Malheureusement, toutes les collections de Flash et de Flex supposent que l'identité est la seule mesure d'égalité requise.
Il y a des indices dans Flex que quelqu'un voulait remédier à ce problème à un moment donné, mais il semble que cela a été abandonné: il y a une interface appelée IUID, et il est mentionné dans le Guide du Flex Developer, mais il est pas utilisé n'importe où. 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'ai écrit un peu plus à ce sujet (dans le contexte de Flex) sur mon blog: Is there no equality?.
Ce n'est pas un problème. Les collections de bas niveau doivent utiliser l'égalité des instances. Tout autre type de vérification d'égalité est complètement arbitraire et devrait être bien défini dans une méthode égale. Il devrait être très évident si vous voulez une égalité d'instance ou une vérification arbitraire de l'égalité des données lorsque vous codez quelque chose. En général, la seule fois où vous souhaitez effectuer des vérifications d'égalité des données (vérifications d'une clé d'objet particulière) consiste à traiter des objets de données distants ou des enregistrements de base de données identifiables par une clé particulière. Il n'y a pas d'implémentation générique dans les collections, car il est trivial à implémenter. – Triynko
Je viens de créer une collection de méthodes d'aide dans une classe DataUtils avec une signature de méthode comme 'indexOfValue (collection: *, valeur: *, match_field_or_function: *): int;' La méthode peut simplement itérer sur la collection et en extraire champ de chaque objet pour la comparaison avec * value *, ou peut exécuter chaque objet à travers une fonction dont le résultat est comparé à * value *. Le paramètre * match_field_or_function * gère même les noms de champs à plusieurs parties à forer, tels que "data.id" sur une collection d'éléments de liste ayant chacun une propriété de données contenant n'importe quel type d'objet avec un champ id. – Triynko