Search code examples
arraysfor-looploopshaxeiterable

Haxe iteration on Dynamic


I have a variable of type Dynamic and I know for sure one of its fields, lets call it a, actually is an array. But when I'm writing

var d : Dynamic = getDynamic();
for (t in d.a) {
}

I get a compilation error on line two:

You can't iterate on a Dynamic value, please specify Iterator or Iterable

How can I make this compilable?


Solution

  • Haxe can't iterate over Dynamic variables (as the compiler says).

    You can make it work in several ways, where this one is probably easiest (depending on your situation):

    var d : {a:Array<Dynamic>} = getDynamic();
    for (t in d.a) { ... }
    

    You could also change Dynamic to the type of the contents of the array.