代码之家  ›  专栏  ›  技术社区  ›  Steve Kuo

清除flex actionscript字典

  •  13
  • Steve Kuo  · 技术社区  · 16 年前

    是否可以清除弯折 flash.utils.Dictionary ?我有一个 Dictionary 我想清除(删除所有元素)。

    6 回复  |  直到 9 年前
        1
  •  6
  •   Jason    16 年前

    我不相信有明确的命令。

    但是,您可以编写自己的循环遍历所有键并运行以下命令

    delete dict[key]; 
    

    或者你可以重新分配

    dict = new  Dictionary()
    
        2
  •  6
  •   Triynko    12 年前

    我 认为 这会起作用,但我不能百分之百确定,因为你在迭代字典时正在修改它:

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

    但是,我通常只在需要清除一个字典时创建一个新字典(尽管如果它在多个地方被引用,那么这可能对您不起作用)。

        3
  •  2
  •   greglieb    12 年前

    要删除字典中的所有元素,请遍历每个键并使用delete关键字

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

    如果要100%确定已删除的键是垃圾回收的,则必须用新字典替换字典实例。

    dict = new Dictionary();
    

    我曾经有一个字典对象,有300万个字符串作为键。只有当字典实例本身是时,才会对这些字符串进行垃圾收集。

        4
  •  1
  •   David Dumke    14 年前

    您不仅需要确保密钥是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 ];
    
        5
  •  0
  •   dario    11 年前

    公正:

    dictionary = new Dictionary()
    
        6
  •  0
  •   Rizwan_Khan    9 年前
    public static function clear(dict:Dictionary):void {
            var key:*
            for(key in dict) {
                delete dict[key];
            }
        }
    

    将上面的函数用作实用函数,您可以在整个代码库中使用它。