Вопрос:

Haxe итерация на динамическом

arrays for-loop loops haxe iterable

4052 просмотра

2 ответа

0 Репутация автора

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

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

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

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

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

Автор: Vadim Источник Размещён: 09.09.2008 12:51

Ответы (2)


5 плюса

341 Репутация автора

Решение

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

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

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

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

Автор: Danny Wilson Размещён: 09.09.2008 01:00

3 плюса

1459 Репутация автора

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

var d = getDynamic();
var a: Array<Dynamic> = d.a;
for (t in a) { ... }
Автор: Michael Pliskin Размещён: 15.09.2008 09:17
32x32