[英]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.