0

如何在 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???!!

为什么?

4

1 回答 1

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,但是您分配了一个值,该值是substring()在 str 上调用的方法的结果,并且当您在其上调用 substring 时,当然 str 尚不存在。不确定这是否有意义:您将 str 定义为在 str 上应用子字符串的结果。

actionscript 编译器应该抱怨 btw:

在属性字符串之后需要一个定义关键字(例如函数),而不是 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)

于 2013-02-10T02:17:41.560 回答