2013-02-10 42 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

相關問題