我正在尝试在ActionScript 3中找到一种初始化字典内联的方法,例如:
private var sampleDic:Dictionary = new Dictionary (
{ "zero", "Hello" },
{ "one", "World" }
);
我尝试了很多方法,但都没有效果。任何人都知道它是否可能,以及如何?
由于
答案 0 :(得分:8)
不,你不能这样做。您必须构造一个字典,然后在循环中或单独添加值。
答案 1 :(得分:6)
如果它是静态的,你可以用块
来做到这一点private static var myDict:Dictionary = new Dictionary();
{
myDict["zero"] = "Hello";
myDict["one"] = "World";
}
答案 2 :(得分:4)
如果您真的想要这样的东西,可以使用字典工厂:
public class DictFactory
{
public var dict:Dictionary;
public function create(obj:Object):Dictionary
{
dict = new Dictionary();
for (var key:String in obj) {
dict[key] = obj[key];
}
return dict;
}
}
用法:
private var sampleDic:Dictionary = new DictFactory().create({ "zero":"Hello", "one": "World" });
DictFactory.create
期望具有键值的Object将应用于返回的Dictionary,如果您传递任何其他对象(在AS3中,任何类是Object),结果可能是不合需要的。 :)
答案 3 :(得分:2)
您可以扩展字典类并使用接受初始键值pears的默认构造函数覆盖默认构造函数。
修改强>
你也可以使用这个脏的JS解决方案:)
import flash.utils.Dictionary;
var dict : Dictionary = function ( d : Dictionary, p : Object ) : Dictionary { for ( var i : String in p ) { d[i] = p[i] }; return d; }(new Dictionary(), {
"zero": "Hello",
"one": "World"
})
trace( dict["zero"] );
答案 4 :(得分:0)
如果没有特定的理由使用词典,您可以使用对象。
private var sample:Object = {
"zero": "Hello",
"one": "World"
};