背景
定义一个数组通常被演示为var array:Array = new Array()
,然而,这将数组赋值降级为方法array.push(value)
或线性声明,如...
array[0] = "apple"
array[1] = "orange"
显然,更简洁的格式是隐式声明,其中双括号被理解为定义一个数组,并自动处理索引。
var array:Array = ["apple", "orange"];
同样适用于对象...
var obj:Object = {
"apple":"fritter",
"orange":"pie"
}
问题
尝试隐式定义字典的键:值对时会出现问题。 阅读文档,我很震惊地发现课堂上只有一种方法。它扩展 Object 的事实至少意味着for ... in
可用,但这就是便利的终点。
特别是因为我们要使用弱键,字典可用的一个参数需要设置为true
,从而排除任何类型的隐式定义。相同的文档概述了我用数组演示的前一种(较长)格式的典型用法:
var dict:Dictionary = new Dictionary(true);
dict[key] = "Letters";
这对于复杂的结构来说是行不通的。
[编辑的with
论点]
因为 Array 和 Object 的文档从来没有真正解释过隐式声明,所以我不禁想象有一种方法可以用字典来做到这一点。有人知道吗?
我现在在想,我唯一的选择是想出某种将复杂对象树映射到字典的方法……这很愚蠢,因为仅使用首先演示的 long 方法会更快。