【发布时间】:2013-12-24 20:14:03
【问题描述】:
我想知道是否有一种方法可以将数组初始化为给定大小n(就像在 c++ 的 std::vector 构造函数中,或者下面没有提示元素黑客的 @steve Richey 的答案)?
我的想法是将n默认元素推回新创建的数组中,但即使这样似乎也不可能,因为似乎没有办法定义默认元素,如下面的原始问题所示:
-- 原始问题--
我正在尝试在 haxe(从 3.0.1 开始)中编写一个静态函数来创建一个给定大小 n 的数组,其中包含任意类型 T 的类型。我不知道如何使用 Type.createEmptyInstance( )为此正确。我能得到的最接近的是:
class Main {
static public function new_array<T>(n:Int):Array<T> {
var a:Array<T> = new Array<T>();
var t:T = new T(); //not OK
for (i in 0...n)
a.push(Type.createEmptyInstance(Type.getClass(t)));
return a;
}
static public function main() {
var a:Array<Int> = new_array(3);
}
}
new_array() 的第二行有问题。编译器说:Main.hx:4: characters 12-19 : Only generic type parameters can be constructed。
我的问题是,如何使这样的函数适用于任何类型 T 的数组。
谢谢,
【问题讨论】: