Ainsi, dans actionscript 3, les instances de la classe Object peut être utilisé un tableau comme associatif:Actionscript « objet » étiqueté comme une véritable structure de données pour une meilleure lisibilité
var doNotHaveSexWith:Object = new Object();
doNotHaveSexWith['mum'] = new Person(...);
doNotHaveSexWith['dad'] = new Person(...);
doNotHaveSexWith['dave'] = new Person(...);
Dire que j'ai une classe, et l'un de ses membres est un objet en lecture seule qui contient ma collection de personnes.
Je pense que la lisibilité de code prend un coup majeur si je renvoie cet 'objet', comment le programmeur pourrait-il savoir quoi en faire? La seule façon pour quelqu'un de savoir qu'il s'agit d'une collection est de lire le code ou les commentaires ...
Quelle est la meilleure façon de signaler qu'un objet est une collection, plutôt qu'un simple objet?
Options:
créer une classe dynamique, simplement extension de l'objet, appelé "tableau associatif" ou quelque chose, juste sorte que le code devient plus lisible ...
Utilisation quelque chose comme le AS3 Datastructures Library, bien que ce semble être un peu exagéré.
Vous venez d'ajouter le mot Collection à la fin du nom de la variable?
Par exemple:
var hotPeopleCollection:Object = new Object();
hotPeopleCollection['me'] = new Person(...);
hotPeopleCollection['sandrasully'] = new Person(...);
Que pensez-vous?
Mise à jour: J'ai décidé d'utiliser un dictionnaire d'extension de classe personnalisé. De cette façon, je peux envelopper une fonction d'accès sensible autour de la fonction de recherche: hasOwnProperty et donner un nom significatif à la classe.
J'ai choisi Dictionnaire sur l'objet pour deux raisons:
- Dictionnaire logique plus intuitive pour une collection
- Dictionnaire apparaît pour effectuer à O (1) pour la recherche. Voir ceci assez informel dictionary vs array vs object performance benchmark
Super, exactement ce dont j'ai besoin merci. Est-ce que c'est juste moi ou AS3 manque-t-il de structures de données? – timoxley
Oui et non. Flash Player 10 apporte des vecteurs qui sont le seul type de données réel qui me manque. ArrayList est un autre qui arrive bientôt (je suppose que c'est dans flex4) qui sera bien aussi comme une alternative au poids lourd ArrayCollection. Mais pour la plupart, tout ce dont j'ai besoin est spécifique à un domaine, ce qui signifie que je dois l'écrire quand même;) –
Je ne suis pas un de ces développeurs, mais je vois ce que vous voulez dire. D'un autre côté, c'est comme dire "n'utilise pas de tableau" parce que tu ne sais pas ce qu'il y a dedans. Un objet _is_ est un tableau associatif. C'est tellement flexible que tout en hérite. Bien sûr, il ya un coût de performance parfois à cause du bandeau que vous mentionnez. Tout est dans l'utilisation. – Glenn