Haxe итерация на динамическом - PullRequest
5 голосов
/ 09 сентября 2008

У меня есть переменная типа Dynamic, и я точно знаю, что одно из ее полей, назовем ее a, на самом деле является массивом. Но когда я пишу

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

Я получаю ошибку компиляции во второй строке:

Вы не можете выполнить итерацию для динамического значения, пожалуйста, укажите Iterator или Iterable

Как я могу сделать это компилируемым?

Ответы [ 2 ]

5 голосов
/ 09 сентября 2008

Haxe не может перебрать Dynamic переменные (как говорит компилятор).

Вы можете заставить его работать несколькими способами, где этот, вероятно, самый простой (в зависимости от вашей ситуации):

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

Вы также можете изменить Dynamic на тип содержимого массива.

3 голосов
/ 16 сентября 2008

Другой способ сделать то же самое - использовать дополнительную временную переменную и явный ввод:

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