2010-12-01 48 views
0

Salut tout le monde, dans de nombreux langages de programmation, il existe un idiome génial qui vous permet d'utiliser un hachage pour compter les occurrences d'éléments. Par exemple, en Perl, supposons que vous avez une liste d'étudiants et que vous voulez voir combien de chaque nom que vous avez (2 Bobs, 1 Jeremy, 22 Aidans etc):ActionScript 3 - Utilisation de la matrice associative pour compter les occurrences

my %uniqueNames; 
for (@studentNames){ $uniqueNames{$_}++; } 

# print it out 
for (keys %uniqueNames){ print "$_ : $uniqueNames{$_}\n"; } 

Vous pouvez le faire dans ActionScript 3 bien sûr, en utilisant l'objet.

Le problème est NaN. Si vous essayez d'auto-créer et auto-incrémenter une clé en même temps, vous obtenez NaN, et tout se décompose. Bien sûr, vous pouvez utiliser un conditionnel pour tester si la clé existe, puis l'auto-incrémenter ou la définir sur un sinon, mais c'est moche.

studentNames[name] = studentNames[name] ? studentNames[name] + 1 : 1; // shudder 

Quelle est l'idiome correct pour AS3? Y a-t-il un idiome? VOUS êtes un idiome. - T

Répondre

3

Votre réponse est correcte mais vous pouvez faire la même chose d'une manière plus courte:

studentNames[name] = (studentNames[name] || 0) + 1; 
+2

+1 parce que le questionneur est un développeur Perl sensible à l'esthétique concerné. –

+0

Nice. lol @ danyal. Vraiment vrai * rougit * –

0

Il n'y a rien de mal ici ... aller de l'avant, idiome. Sérieusement, ce que vous avez fait est bien.