Название немного запутанно. Но позвольте мне объяснить мою проблему.Доступ к карте Haxe с помощью ключей объектов с использованием нового ключа с таким же значением
Предположим, что у вас есть класс под названием MyObj
. Этот MyObj
имеет функцию hashCode()
, которая создает хэш-код Int
для работы с картами Haxe в качестве ключа. Например:
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)
), кажется, что каждый «новый» объект, который используется в качестве ключа на самом деле новый «идентификатор» или «хэш-код» (то, что когда-либо Haxe делает под капот).
У меня даже есть оператор равенства, перегруженный в MyObj
(который может быть абстрактным).
Вопрос в том, как вы можете извлекать элементы с карты с использованием разных объектов, которые содержат те же значения, что и указано выше.
, как сделать что-то вроде этой работы:
mymap[new MyObj(my,params)]
hmm хэш-код, похоже, работает с обычной картой; однако попробует HashMap – efel
Нет использования haxe.ds.HashMap даже не компилируется, потому что объект имеет абстрактный тип с равными перегруженными и все – efel