如何实现类似于 Vector.<T> 的泛型?

5

因此,ActionScript 3具有使用泛型的Vector类(Vector.)。我没有看到其他任何使用这种泛型的类。

如果您要自己实现Vector.,您会如何实现?

4个回答

3

如果你想使用泛型,最好查看Haxe。它与ActionScript 3非常相似,并且编译为swc或swf。


1

回到上面的haxe帖子...你可以在haxe中创建泛型,然后将代码编译为as3。最近没有尝试过它是如何处理的,但是.. http://haxe.org/doc/flash/as3gen


0

你可以创建一个以类型T作为参数的类,类似于这样 Foo( type:* )

然后在所有可以向Vector类添加项目的方法中,如果传递给该方法的对象的类型与我在实例化我的vector类时定义的类型不匹配,我会引发异常。

话虽如此,像这样的类可能不会获得很好的性能,因为每次处理对象时都需要在运行时检查其真实类型,在C++模板类中,类是在编译时创建的,因此不需要进行运行时类型检查。


不,我真正想了解如何精确实现它...... 使用Vector使用的泛型语法和编译时检查......他们曾经做过......他们是如何做到的? - Brian Genisio
2
AS3中不存在泛型,你不能创建模板类或任何类似的东西。最接近泛型的东西是内置的Vector.<T>类型。 - dotminic
2
但是Vector可以做到这一点...它是一个特殊的编译器吗? - Brian Genisio
2
是的,但Vector类已经内置在AS3语言中了,所以可以说它是一个编译器一次性的东西。我们还可以希望Generics有一天能够被实现到AS3中! - dotminic

0

AS3不支持泛型类声明。这里有一个很好的讨论链接


一个类型为 Object 的对象能否用作泛型? - Kris Welsh
我不知道。而且,在那种情况下使用 Object 会跳过整个编译时检查过程,这并没有太多用处。 - Ravindranath Akila

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接