Reputation:
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?
Upvotes: 5
Views: 5087
Reputation: 391
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.
Upvotes: 6
Reputation: 2352
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) { ... }
Upvotes: 3