gpt4 book ai didi

actionscript-3 - 如何在 AS3 中清理字典

转载 作者:行者123 更新时间:2023-12-04 16:34:41 27 4
gpt4 key购买 nike

这是在 Dictionary 工作吗?清理所有关键引用?

public static function cleanDic(_dic:Dictionary):void
{
for (var eachKey:String in _dic)
{
delete _dic[eachKey];
}
}

我担心,如果我在 for 期间删除了某个键循环将导致无法清除所有元素。

这会发生吗?

谢谢

最佳答案

首先,我不喜欢这里给出的任何答案。现在解释一下:

  • 您的代码不会删除所有字典键,因为字典键可能是任何对象,而不是必需的字符串。所以,你需要迭代:
    for (key:Object in dictionary) delete dictionary[key];
  • 当您不想创建新词典时,有许多合理的情况 - 创建新词典有时是非常糟糕的替代品。例如,您在代码中的两个位置共享值(等等,您为什么还要创建一个?)。一旦你创建了一个新对象,代码中的位置应该被通知并以某种方式重新获得对新对象的新引用。因此,有时从字典中删除所有键,虽然在计算上并不完全有效,但与创建新键相比会更好,因为它会使事情变得简单。
  • Dictionary 有一个有趣的方面。它实际上实现为两个哈希表,一个包含字符串键,另一个是指针键(对象键)。不幸的是,这是由于糟糕的/粗心大意的设计,而不是故意的。它具有从 Object 继承的字符串哈希表和它自己的指针键之一。通常不想将字符串放入字典(或任何其他隐式强制为字符串的内容,如数字或逻辑值),因此,当您发现自己使用带有字典的字符串键时 - 再想一想,您可能想使用 Object反而。
  • 字典循环过程中发生了什么:在幕后创建了一个键集合,实际上,您遍历该集合。然而,由于字典的双重性质,两个键可能被认为是同一个(例如,如果你添加了一个字符串 "1" 和 int 1 键——你只会得到其中一个。删除键时,在不同的播放器版本有不同的结果。在一些旧版本中,存在一个错误,即删除这些键然后序列化字典后,其中一个键仍然保留在其中。但是,再次,您应该避免使用字符串或数字作为键。
  • 关于actionscript-3 - 如何在 AS3 中清理字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12616524/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com