Очистить словарь Flex ActionScript - PullRequest
13 голосов
/ 10 марта 2010

Можно ли очистить Flex flash.utils.Dictionary? У меня есть Dictionary, который я хочу очистить (удалить все элементы).

Ответы [ 6 ]

6 голосов
/ 10 марта 2010

Я думаю это сработает, но я не уверен на 100%, так как вы изменяете словарь, перебирая его:

function clear(d:Dictionary):void {
  for(var id:* in d) {
    delete d[id];
  }
}

Однако я обычно просто создаю новый словарь всякий раз, когда мне нужно очистить его (хотя, если на него ссылаются в нескольких местах, это может не сработать для вас).

6 голосов
/ 10 марта 2010

Я не верю, что есть явная команда очистки.

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

delete dict[key]; 

Или вы можетепросто переназначить

dict = new  Dictionary()
2 голосов
/ 15 мая 2014

Чтобы удалить все элементы в Словаре, прокрутите каждый ключ и используйте ключевое слово delete

function clear(dict:Dictionary):void
{    
  for(var key:Object in dict) 
  {
        delete dict[key];
  }
}

Если вы хотите быть на 100% уверены, что ваши удаленные ключи являются сборщиком мусора, вы должны заменить свой экземпляр Dictionary на новый Dictionary.

dict = new Dictionary();

Когда-то у меня был объект Dictionary с 3 миллионами строк в качестве ключей. Эти строки будут собираться только при наличии самого экземпляра Dictionary.

1 голос
/ 27 марта 2012

Вам нужно не только убедиться, что ключ относится к типу object, либо * вам нужно сначала получить ключи, а затем удалить их из словаря.В противном случае у вас останется один ключ в словаре (последний).

Я помню вышеупомянутый код, работавший до, но недавно, который изменился с последней итерацией flash player.

Этокод будет гарантировать, что они все удалены, включая последний.

//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 ];
0 голосов
/ 12 декабря 2016
public static function clear(dict:Dictionary):void {
        var key:*
        for(key in dict) {
            delete dict[key];
        }
    }

Используйте вышеуказанную функцию в качестве служебной функции, и вы можете использовать ее во всей базе кода.

0 голосов
/ 16 января 2015

Просто:

dictionary = new Dictionary()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...