ActionScript 3 - Использование ассоциативного массива для подсчета вхождений - PullRequest
0 голосов
/ 01 декабря 2010

Привет всем, во многих языках программирования есть эта замечательная идиома, которая позволяет вам использовать хэш для подсчета вхождений элементов.Например, в Perl, предположим, у вас есть список студентов, и вы хотите увидеть, сколько у вас есть каждого имени (2 Бобса, 1 Джереми, 22 Эйдана и т. Д.):

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

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

Так что вы можете сделать это вActionScript 3, конечно, с использованием Object.

Проблема в NaN.Если вы попытаетесь автоматически создать и автоинкрементировать ключ одновременно, вы получите NaN, и все это сломается.

Конечно, вы можете использовать условное выражение для проверки существования ключа, а затем его автоинкрементировать,или установите его на единицу, если нет, но это ужасно.

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

Какая правильная идиома для AS3?Есть ли идиома?Ты идиома.- Т

Ответы [ 2 ]

3 голосов
/ 01 декабря 2010

Ваш ответ правильный, но вы можете сделать то же самое более коротким способом:

studentNames[name] = (studentNames[name] || 0) + 1; 
0 голосов
/ 01 декабря 2010

Здесь нет ничего плохого ... иди, идиома.Серьезно, то, что ты сделал, прекрасно.

...