タイトルはちょっと混乱します。しかし、私の問題を説明させてください。新しい値キーを使用したオブジェクトキーによるHaxeマップアクセス
MyObj
というクラスを持つようなふりをしましょう。 MyObj
にはhashCode()
という機能があり、Haxeマップをキーとして使用するためのInt
ハッシュコードを生成します。ように:
var mymap = new Map<MyObj,String>();
var myobj = new MyObj(my,params);
mymap[myobj] = "whatever";
trace(mymap[myobj]); // works great and can print "whatever" from map
上記は素晴らしいです。しかしながら;同じパラメータの新しいオブジェクトにマッピングすると機能しません。
trace(mymap[new MyObj(my,params)]); // does not work, returns null
プリントアウトして全体マップ(trace(mymap)
)を調べることがキーとして使用されているすべての「新しい」オブジェクトが実際に新しい「ID」または「ハッシュコード」であると思われる(haXeのは下行い、これまで何フード)。
さらに、等価演算子のオーバーロードがMyObj
(抽象タイプになる可能性があります)になっています。
質問は、上記のように同じ値を含むさまざまなオブジェクトを使用してマップから要素を取得するにはどうしたらよいですか。
mymap[new MyObj(my,params)]
hmmハッシュコードは通常のマップで動作するようです。ただし、ハッシュマップを試してみる – efel
haxe.ds.HashMapを使用していないのは、オブジェクトがequalsがオーバーロードされた抽象型であり、すべてが – efel