我正在使用Dictionary其中鍵是Number對象,但如果鍵是大整數,則會遇到意外問題。字典中的大數字作爲鍵(動作3)
下面是插入在Dictionary 2鍵 - 值對,其中一個具有小密鑰和一個與一個大的一些示例代碼:
var dictionary:Dictionary = new Dictionary();
var smallNumberKey:Number = 1;
dictionary[smallNumberKey] = "some value";
var largeNumberKey:Number = 0x10000000;
dictionary[largeNumberKey] = "some value";
for (var key:Object in dictionary) {
trace("Key: " + key);
trace("Key type: " + flash.utils.getQualifiedClassName(key));
trace("Key as Number: " + (key as Number));
}
這給出以下輸出:
Key: 1
Key type: int
Key as Number: 1
Key: 268435456
Key type: String
Key as Number: null
沒有任何鍵似乎被存儲爲一個數字。這是爲什麼?第一個存儲爲int,可以將其轉換爲Number。但第二個似乎被存儲爲一個字符串,這對我來說沒有意義。這裏發生了什麼?
要非常小心使用這種方法。由於您使用的是對象,因此提供給您的NumberKey的'Number'與密鑰的身份無關,就像'Dictionary'鍵一樣。使用完全相同的數字構造的一百萬個NumberKey對象將創建一百萬個獨特的字典條目。 – 2012-02-26 02:57:41
當然,這是正確的。你需要跟蹤你已經創建的密鑰。不過,這是實際使用詞典的詞典部分的唯一方法。 – weltraumpirat 2012-02-26 17:20:53