如何在AS3中使用字符串键定义字典?

时间:2013-02-10 01:37:27

标签: string actionscript-3 dictionary key

如何在AS3中使用字符串键定义字典?以及如何进行读操作? 例如:

var Dic:Dictionary = new Dictionary();
Dic["Exhausted"] = "He who talks more is sooner exhausted, please keep smiling :)";
String str = str.substring(8,str.length-1); // == str = "Exhausted";
trace('Dic[' + str + '] = ' + Dic[str]);

输出为Dic [Exhausted] = undefined ??? !!

为什么?

1 个答案:

答案 0 :(得分:0)

我认为你在这一行有一个语法错误:

String str = str.substring(8,str.length-1);

如果您只是使用它:

var d:Dictionary = new Dictionary();
d["Exhausted"] = "He who talks more is sooner exhausted, please keep smiling :)";

trace(d["Exhausted"]);

你可以看到一切都很好。

var str:String = str.substring(8,str.length-1);的问题是您定义了一个名为“str”的字符串:var str:String,但是您指定了一个值,该值是在str上调用的substring()方法的结果当你在它上面调用substring时,cours str还不存在。 不确定这是否有意义:将str定义为在str。

上应用子字符串的结果

动作脚本编译器应该抱怨btw:

  

期望在属性String之后定义关键字(例如函数),而不是str。

只是一个疯狂的猜测,但你碰巧在你的代码中的其他地方定义了str,你只是在使用之前使用str再次更新str?在这种情况下,您不应该重新定义,str,您应该只是分配一个新值。 例如

//somewhere else
var str:String = "12345678Exhausted";
//further down
var Dic:Dictionary = new Dictionary();
Dic["Exhausted"] = "He who talks more is sooner exhausted, please keep smiling :)";
str = str.substring(8,str.length); // == str = "Exhausted";
trace('Dic[' + str + '] = ' + Dic[str]);

另外,另一种语法错误是您定义str的方式: 应该是var str:String(as2 / as3语法),而不是String str(java / c ++ / etc.style)