首先是一点背景:我正在寻找一种方法来创建一个“集合”库,该库将基于 Flash Player 版本的实现(FP10 上的向量,FP9 上的数组)从调用代码中抽象出来。我已经写了一个小的 AS3 库,但是......
- ...性能很差(特别是因为两个间接级别和对 Array 实现的运行时类型检查)
- ...代码很难看(因为需要在编译时定义 Vector 类型,所以我需要一个工厂返回基于仅包含受支持类型的 Enum 的具体 Vector 实例)
我目前正在研究 Haxe 作为一种可能的解决方案,因为它支持类型参数并且能够编译成各种 Flash Player 版本(并且显然编译成更优化的字节码)。
现在,我的问题是:有没有办法在 Haxe 中编写一个可以像这样在 AS3 代码中使用的库
var foo:IMyInterface = new MyImplementation(int);
var bar:IMyInterface = new MyImplementation(getDefinitionByName("my.package.MyClass"));
IMyInterface
暴露所需的方法(,,push
... pop
)?
基本思想是,我想在运行时提供类型信息,并获得一个类型安全的 Flash Player 版本独立“集合”,以便在调用代码中使用,而不必担心到处都是条件编译片段。
Haxe 可以做这样的事情吗?如果可以,我怎样才能让它工作?