如何在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 ??? !!
为什么?
答案 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)