2013-02-10 74 views
0

如何在AS3中使用字符串键定义字典?以及如何做读取操作? 例如:如何在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]); 

输出迪科[用尽] =未定义??? !!

为什么?

回答

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定义为在str上应用子字符串的结果。

ActionScript编译器应该已经抱怨BTW:

预期的属性字符串之后的定义关键字(如功能),而不是海峡。

只是一个疯狂的猜测,但你会碰巧有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++ /等风格。)

+0

很好的解释,乔治 – 2013-02-10 03:11:29

+0

首先所有的,我是Java的人,所以请问我从字符串语法错误,,,,是的,我得到了“str”形式上线(对不包括此信息) 详细信息:{var str:String = emotions [ I]的ToString(); str = str.substring(8,str.length-1); //我使用这一行来获取我使用其名称作为Dic关键字的对象的名称。 trace('Dic ['+ str +'] ='+ Dic [str]);} – 2013-02-10 03:14:52

+0

是的,总之,我需要从字典中弹出一个值,而键是一个变量!例如:'Dic [x],而x是一个变量',假设我从另一个代码获得了x值。怎么来的? – 2013-02-10 03:23:39

相关问题