0

在 Flex 中工作我需要用相当复杂的结构填充字典。基于此文档页面,我尝试通过以下语法创建字典文字:

    var defaultMarkingA =
        {
            type: 'page',
            displayText: 'XYZ',
            innerMarkings: [
                {id: 'ABC', type: 'page', displayText: 'ABC'}
            ]
        };

我希望这段代码创建的是具有三个映射的嵌套字典结构:

  1. “类型”->“页面”
  2. “显示文本”->“XYZ”
  3. "innerMarkings" => 单元素数组,其中包含另一个字典:
    1. “身份证”->“ABC”
    2. “类型”->“页面”
    3. “显示文本”->“ABC”

代码实际创建的是根据 getQualifiedClassName 的“对象”。我在这里做错了什么?actionscript 是否无法处理嵌套的字典文字?

4

1 回答 1

3

你没有做错任何事情,这不是制作你想要的结构的方式。usingsomething = {}something = new Object(). 没有这样的速记来创建Dictionary.

您链接的文档中

关联数组是 Object 类的一个实例,这意味着每个键对应一个属性名称。

ActionScript 3.0 引入了一种称为字典的高级关联数组类型。字典是 flash.utils 包中 Dictionary 类的实例,使用的键可以是任何数据类型,但通常是 Object 类的实例。换句话说,字典键不限于字符串类型的值。

要获得预期的结果,您必须执行以下操作:

var defaultMarkingA:Dictionary = new Dictionary();
defaultMarkingA["type"] = "page";
defaultMarkingA["displayText"] = "XYZ";
defaultMarkingA["innerMarkings"] = new Array();

var dict:Dictionary = new Dictionary();
dict["id"] = "ABC";
dict["type"] = "page";
dict["displayText"] = "ABC";

defaultMarkingA["innerMarkings"].push(dict);

Object将 an用作关联数组没有任何问题。我能看到的唯一问题是使用Object和性能之间的性能可能会有所不同,Dictionary但是您需要进行一些分析以查看a)是否存在任何差异以及b)该差异是否重要。

于 2012-07-27T23:47:53.080 回答