Est-il possible d'avoir une contrainte sur les champs statiques dans Haxe? Par exemple nous pouvons avoir des classes qui ont un champ statique instance
de type de classe correspondante. Et nous pouvons vouloir une fonction qui retournera une instance de classe passée en paramètre. Ceci est ma tentative:contrainte sur les champs statiques et l'inférence de type
class Foo {
static public var instance = new Foo();
function new() {}
}
class Test {
// get instance from every class that have static field instance
static function getInstance<T, ClassT:({instance:T}, Class<T>)>(t:ClassT):T {
return t.instance;
}
static function main() {
var a = getInstance(Foo);
$type(a); //Test.hx:14: characters 14-15 : Warning : Unknown<0>
}
}
mais il échoue, car type parameter constraints are checked lazily. Des idées sur comment faire cela?
est-il pas plus facile faire comme ça, si vous utilisez macro: 'fonction macro statique getInstance (e: exprof >): exprof return macro $ e.instance; ' –
romamik
Bien sûr, j'essaie simplement de ne pas tout déplacer en macro, donc vous pouvez étendre la fonction, si nécessaire, sans entrer dans le code de macro. – KevinResoL
C'est un bon point – romamik