Чудех се дали има начин да се инициализира масив до даден размер n
(като в std::vector
конструктора на c++ или отговора на @steve richey по-долу без хакването на елемента hint)?
Мисълта ми беше да върна 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.
Благодаря,