Ich habe diesen Teil des Arbeitscodes, der Instanzen eines Typs erstellen kann.Haxe Speichern generischer Constraint-Typen
typedef Constructible = {
public function new(entity:Entity):Void;
}
Die folgende Funktion einfach macht Script-Objekte zu einem gewissen Entity
verbunden. Alle Skripts erben von BehaviorScript
. So T
kann Walk
sein, wo class Walk extends BehaviorScript {}
.
Ich möchte die Typen aller Skripts speichern, die von der Funktion in einer Karte erstellt werden, wo der Typ der Schlüssel ist.
// Walk, Attack, Evade classes extend from BehaviorScript
var e = createEntity();
var scriptA = register(Walk, e);
var scriptB = register(Attack, e);
var scriptC = register(Evade, e);
// ISSUE: what to put as key?
var map = new Map<?type as key?, BehaviorScript>();
map.set(Type.getClass(scriptA), scriptA);
map.set(Type.getClass(scriptB), scriptB);
map.set(Type.getClass(scriptC), scriptC);
Das Endziel wäre die Skripte über Art zugreifen, denken Sie an getComponent<T>
Unity (vielleicht gibt es eine bessere Art und Weise)
getScript<T:BehaviorScript>(type:Class<T>):Null<T>{
return map.get(type);
}
Gibt es eine Lösung beschränkt generische Typen in einem Behälter zu speichern?