Мне нужно знать, как правильно реализовать Карты с 64-битными ключами. В них будет не так много элементов, мне просто нужно использовать разные биты ключа для разных вещей с достаточно большим адресным пространством и мне нужно, чтобы это было очень быстро, поэтому String
ключи, вероятно, будут слишком медленными. До сих пор я пробовал:
import haxe.Int64;
import haxe.Unserializer;
import haxe.Serializer;
class Test {
static function main () {
var key:Int64 = 1 << 63 | 0x00000001;
var omap:Map<Int64, String> = new Map<Int64, String>();
omap.set(key, "test");
var smap:Map<Int64, String> = Unserializer.run(Serializer.run(omap));
var key2:Int64 = 1 << 63 | 0x00000001;
trace(key+" "+smap.get(key2));
}
}
что, очевидно, не работает, потому что haxe.Int64
создает экземпляр объекта. Использование cpp.Int64
работает, потому что по какой-то причине в моем коде cpp оно возвращается к 32-битному целому числу, и я не знаю, что я делаю неправильно. Как я могу заставить его «остаться» 64-битным, или я должен сделать это как-то иначе?