Как Map обрабатывает столкновение индекса?
Я пытаюсь создать коллекцию, которая отображает определенный тип в мой тип Vector2i следующим образом:
Collection<Vector2i, Type>
Я перевожу проект, который у меня был ранее в C#, на Haxe. В C# мне нужно было только реализовать интерфейс в Vector2i, чтобы иметь возможность индексировать словарь с помощью Vector2i, но я не уверен, что мне нужно сделать, чтобы добиться того же с Haxe.
1 ответ
Из того, что я прочитал в справочнике по языку, Map может принимать только некоторые типы в качестве ключей (String, Int, Float и т. Д.), Но не любой тип, и нет такого интерфейса, как в C# для использования произвольных ключей.
В итоге я сначала создал свой собственный класс Map с ключом Vector2i, расширив интерфейс IMap и используя StringMap для сохранения ключей, и еще один StringMap для сохранения значений, а также я создал собственный интерфейс для получения уникальной строки из каждого ключа для их правильного сопоставления. Но затем, прочитав немного больше, я обнаружил, что https://github.com/polygonal/ds который можно загрузить с помощью haxelib, имеет вид карты, который я хотел (вероятно, гораздо более оптимизированный), и еще много структур, которые мне понадобятся в будущее как приоритетная очередь.