Очистить словарь Flex ActionScript
Можно ли очистить Flex flash.utils.Dictionary
? У меня есть Dictionary
, который я хочу очистить (удалить все элементы).
Ответы
Ответ 1
Я не верю, что есть явная ясная команда.
Однако вы можете написать свой собственный, который будет циклически перемещаться по всем клавишам и запускать этот
delete dict[key];
Или вы можете просто переназначить
dict = new Dictionary()
Ответ 2
Я думаю, что это сработает, но я не уверен на 100%, так как вы изменяете словарь во время его итерации:
function clear(d:Dictionary):void {
for(var id:* in d) {
delete d[id];
}
}
Однако, как правило, я просто создаю новый словарь, когда мне нужно его очистить (хотя, если он упоминается в нескольких местах, это может не сработать для вас).
Ответ 3
Чтобы удалить все элементы в словаре, прокрутите каждую клавишу и используйте ключевое слово delete
function clear(dict:Dictionary):void
{
for(var key:Object in dict)
{
delete dict[key];
}
}
Если вы хотите быть на 100% уверенным, что ваши удаленные ключи собираются с мусором, вы должны заменить экземпляр словаря на новый словарь.
dict = new Dictionary();
У меня когда-то был объект Dictionary с 3 миллионами строк в качестве ключей. Эти строки будут собирать только мусор, если сам экземпляр словаря.
Ответ 4
Вам нужно не только убедиться, что ключ имеет тип, либо * вам нужно сначала получить ключи, а затем удалить их из словаря. В противном случае вы оставите один ключ в словаре (последний).
Я помню вышеприведенный код, работающий до этого, но недавно, который изменился с последней итерацией флеш-плеера.
Этот код гарантирует, что все они удалены, включая последний.
//Clean up the dictionary
var keys:Array = [];
var key:*;
for ( var key:* in dictionary )
keys.push( key );
for each ( var key:* in keys )
delete dictionary[ key ];
Ответ 5
Просто:
dictionary = new Dictionary()
Ответ 6
public static function clear(dict:Dictionary):void {
var key:*
for(key in dict) {
delete dict[key];
}
}
Используйте вышеуказанную функцию как функцию утилиты, и вы можете использовать ее на всей базе кода.