Question

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?

Was it helpful?

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.

OTHER TIPS

Another way to do the same is to use an extra temp variable and explicit typing:

var d = getDynamic();
var a: Array<Dynamic> = d.a;
for (t in a) { ... }
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top