6

首先是一点背景:我正在寻找一种方法来创建一个“集合”库,该库将基于 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 可以做这样的事情吗?如果可以,我怎样才能让它工作?

4

1 回答 1

3

Haxe 有机会覆盖 Haxe 中的本地类(例如int)。看看元数据手册。元数据已在 2.06 版中添加。

至于getDefinitionByName()方法的类似物。看一下类的resolveClass()方法Type

于 2011-05-23T12:53:32.467 回答