关于词典的Adobe specifically states:
对象的标识用于查找对象,而不是从调用toString()返回的值
然而,当我跑
时if(myInstance in myDictionary) { ... }
要查看myInstance是否已作为myDictionary中的'key'存在,请调用myInstance.tostring!
任何人都知道原因或解决方法吗?
答案 0 :(得分:1)
in
关键字通常与对象属性一起使用,对象属性是字符串。考虑for each
循环与for in
循环之间的差异。
我们通常使用for in
循环来迭代对象的动态属性:
private var o:Object = { property1: "value1", property2: "value2" };
for (var propertyName:String in o)
{
trace(propertyName);
trace(o[propertyName]);
}
Outputs:
property1
value1
property2
value2
因此,在您的代码段中,in
关键字正在调用toString()
。
测试密钥是否存在的正确方法是测试null
:
if (myDictionary[myInstance])
trace("key exists and it has a value");