1

意味的に等しい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方法はありますか、それともこのタイプのものに使用する別のクラスがありますか?

4

2 に答える 2

0

ADictionaryは、オブジェクトが「等しい」場合でも、オブジェクトを異なるビンに配置します。キーとして使用される2つのオブジェクトが挿入時に衝突を引き起こす場合、ディクショナリは、次に使用可能なビンを使用して2番目のオブジェクトを配置します。これは、前述のとおりですp!==q。ただし、使用方法Object(本質的にはマップ)は異なり、。をチェックするだけですp.equals(q)

于 2009-09-02T17:07:48.493 に答える
0

どうやら、を使用する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
于 2009-09-02T16:50:33.330 に答える