Flash implémente un dictionnaire (c'est-à-dire quelque chose comme un hashmap) en utilisant deux approches. Une approche est la classe La documentation n'a pas été beaucoup d'aide sur ce point. Y a-t-il une façon simple et claire de faire cela? À défaut, existe-t-il un moyen laid, mais pas trop fragile de faire cela? P> flash.utils.dictionner code>, et l'autre est un objet
générique code>. Je voudrais vérifier combien de
clé: valeur code> est dans le dictionnaire. Dans la plupart des cas, j'aimerais simplement le savoir qu'il y a n'importe quel bouton i>
: valeur code> paires, c'est-à-dire juste vérifier s'il est vide. P>
5 Réponses :
La seule façon qui me vient à l'esprit consiste à parcourir toutes les clés et à les compter - comme: joli boiteux - mais je pense que c'est ce qui vous reste. Notez que le dictionnaire est juste une enveloppe vraiment très très mince pour l'objet vanille. P> p>
Cela vous dit de manière fiable si un dictionnaire particulier est vide: Notez que vous devez faire le obj! = null code> chèque - même si vous définissez
MyDictionnaire [Touche] = NULL code>, il ira toujours comme un objet NULL, donc un
régulier pour ... dans code> la boucle ne fonctionnera pas dans cette instance. (Si vous utilisez toujours
Supprimer MyDiction [Clé] Code> Ça devrait être bien). p> p>
Cela semble être une solution pour les mauvaises pratiques. Supprimer une entrée du dictionnaire doit retirer la clé et la valeur. Si, pour une raison quelconque, je veux supprimer la valeur, mais laissez la clé, puis le dict n'est pas vraiment vide - il a des clés (apparemment significatives) dedans.
Assez juste. Si vous supprimez la déclaration (obj! = Null), cela fonctionnera, mais je devine que l'autre réponse fonctionnera aussi ...
En fait, ne serait-il pas préférable de combiner l'approche ci-dessus qui utilise ... dans celui-ci? Le pour ... dans l'approche vous dit si vous avez des clés du tout, ce qui est important. Cette approche peut échouer si vous avez une clé avec une valeur null.
Une autre approche consiste à ajouter une entrée de dictionnaire dict ["Count"] qui itère chaque fois que vous ajoutez un élément au dictionnaire et iTerate chaque fois que vous supprimez un élément. Ou une solution plus sophistiquée sous-classes Dictionnaire et ajouterait une propriété push, pop et une propriété qui fait fondamentalement la même chose. P>
et le cas spécial vide / non vide mentionné par l'OP:
var empty:Boolean = true; for (var key:Object in dict) { empty = false; break; }
Testé et travail.
La clarté améliorée en évitant la langue négative.
/** * @return Whether given Dictionary has content or is empty. */ public function hasContent(dictionary:Dictionary):Boolean { for (var anything:Object in dictionary) return true; return false; }