簡體   English   中英

如何在Point索引的動作腳本中創建關聯數組?

[英]How to make an associative array in actionscript indexed by Point?

我想要由Point (或者通常是Object )索引的具有語義相等性的關聯數組。 不幸

var p:Point = new Point(1, 1);
var q:Point = new Point(1, 1);

var dict:Dictionary = new Dictionary();
dict[p] = 5;
trace(dict[p]); // => 5
trace(dict[q]); // => undefined

因為

trace(p===q); // => false

有什么方法可以告訴Dictionary如何對它的鍵進行排序,或者有不同的類可用於此類事情?

顯然,如果您使用Object ,它似乎可以按預期工作:

var p:Point = new Point(1, 1);
var q:Point = new Point(1, 1);
var r:Point = new Point(1, 2);

var dict:Object = new Object();
dict[p] = 5;
trace(dict[p]); // => 5
trace(dict[q]); // => 5
trace(dict[r]); // => undefined

Dictionary會將對象放置在不同的容器中,即使它們“相等”也是如此。 如果這兩個用作鍵的對象在插入時導致沖突,則Dictionary將僅使用下一個可用的bin放置第二個對象,因為正如您所說, p!==q 但是使用Object (本質上仍然是一張地圖)是不同的,它僅檢查p.equals(q)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM