Itération Haxe sur Dynamic
Question
j'ai une variable de type Dynamic
et je connais avec certitude l'un de ses champs, appelons-le a
, est en fait un tableau.Mais quand j'écris
var d : Dynamic = getDynamic();
for (t in d.a) {
}
J'obtiens une erreur de compilation sur la deuxième ligne :
Vous ne pouvez pas itérer sur une valeur dynamique, veuillez spécifier Iterator ou Iterable
Comment puis-je rendre cela compilable ?
La solution
Haxe ne peut pas parcourir Dynamic
variables (comme le dit le compilateur).
Vous pouvez le faire fonctionner de plusieurs manières, celle-ci étant probablement la plus simple (en fonction de votre situation) :
var d : {a:Array<Dynamic>} = getDynamic();
for (t in d.a) { ... }
Vous pourriez également changer Dynamic
au type du contenu du tableau.
Autres conseils
Une autre façon de faire la même chose consiste à utiliser une variable temporaire supplémentaire et un typage explicite :
var d = getDynamic();
var a: Array<Dynamic> = d.a;
for (t in a) { ... }