Можно ли написать библиотеку AS3 с Haxe, которая использует параметры типа? - PullRequest
6 голосов
/ 23 мая 2011

Сначала немного предыстории: я ищу способ создать библиотеку «коллекций», которая абстрагирует реализацию на основе версии Flash Player (Vector на FP10, Array на FP9) от вызывающего кода. Я уже написал небольшую библиотеку AS3, которая делает это, но ...

  • ... производительность плохая (особенно из-за двух уровней косвенности и проверки типов во время выполнения в реализации Array)
  • ... код уродлив (поскольку типы Vector нужно определять во время компиляции, мне нужна фабрика, возвращающая конкретные экземпляры Vector на основе Enum, который содержит только поддерживаемые типы)

В настоящее время я рассматриваю Haxe как возможное решение, поскольку оно поддерживает параметры типа и может компилироваться в различные версии Flash Player (и, по-видимому, компилируется в байт-код, оптимизированный по mmore).

Теперь мой вопрос: существует ли способ написать библиотеку в Haxe, которую можно использовать в коде AS3 следующим образом

var foo:IMyInterface = new MyImplementation(int);
var bar:IMyInterface = new MyImplementation(getDefinitionByName("my.package.MyClass"));

с IMyInterface раскрытием необходимых методов (push, pop, ...)?

Основная идея заключается в том, что я хочу предоставить информацию о типе во время выполнения и получить типизированную «коллекцию» независимых версий Flash Player для использования в вызывающем коде, не беспокоясь об условных фрагментах компиляции повсюду.

Может ли Haxe сделать что-то подобное, и если да, как я могу заставить это работать?

1 Ответ

3 голосов
/ 23 мая 2011

В Haxe есть возможность переопределить нативные классы (например, int) в Haxe.взгляните на руководство Метаданные .Метаданные были добавлены в версии 2.06.

Что касается аналога getDefinitionByName() метода.Взгляните на resolveClass() метод класса Type.

...