我想知道是否有一种方法可以初始化一个数组到给定的大小
-- 原始问题 --
我正试图在Haxe(截至3.0.1)中编写一个静态函数来创建一个由任意类型T的n个元素组成的数组。我无法弄清如何正确使用Type.createEmptyInstance()。我能接近的是:
n
,就像C++的std::vector
构造函数或下面@steve richey的答案中的提示元素hack一样?我的想法是将n
个默认元素推回到新创建的数组中,但即使这样似乎也不可能,因为似乎没有定义默认元素的方法,如下面的原始问题所示:-- 原始问题 --
我正试图在Haxe(截至3.0.1)中编写一个静态函数来创建一个由任意类型T的n个元素组成的数组。我无法弄清如何正确使用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的数组。
谢谢。