Vadim
Vadim

Reputation:

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?

Upvotes: 5

Views: 5087

Answers (2)

Danny Wilson
Danny Wilson

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

Michael Pliskin
Michael Pliskin

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

Related Questions