Итерация Haxe в Dynamic

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

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

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

You can't iterate on a Dynamic value, please specify Iterator or Iterable

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

Структурированный массив Numpy
Структурированный массив Numpy
Однако в реальных проектах я чаще всего имею дело со списками, состоящими из нескольких типов данных. Как мы можем использовать массивы numpy, чтобы...
T - 1Bits: Генерация последовательного массива
T - 1Bits: Генерация последовательного массива
По мере того, как мы пишем все больше кода, мы привыкаем к определенным способам действий. То тут, то там мы находим код, который заставляет нас...
Что такое деструктуризация массива в JavaScript?
Что такое деструктуризация массива в JavaScript?
Деструктуризация позволяет распаковывать значения из массивов и добавлять их в отдельные переменные.
5
0
4 374
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

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

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

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

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

Можно ли использовать несколько типов массива <Dynamic>, например [0, "Second element", ["Nested array here!"], "another string"]?

Anderson Green 21.11.2012 21:22

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

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

Другие вопросы по теме