Итерация Haxe на Dynamic
Вопрос
У меня есть переменная типа Dynamic
и я точно знаю одно из его полей, назовем его a
, на самом деле это массив.Но когда я пишу
var d : Dynamic = getDynamic();
for (t in d.a) {
}
Я получаю ошибку компиляции во второй строке:
Вы не можете выполнять итерацию динамического значения, укажите Iterator или Iterable.
Как я могу сделать это компилируемым?
Решение
Хаксе не может перебирать Dynamic
переменные (как говорит компилятор).
Вы можете заставить его работать несколькими способами, но этот, вероятно, самый простой (в зависимости от вашей ситуации):
var d : {a:Array<Dynamic>} = getDynamic();
for (t in d.a) { ... }
Вы также можете изменить Dynamic
к типу содержимого массива.
Другие советы
Другой способ сделать то же самое — использовать дополнительную временную переменную и явную типизацию:
var d = getDynamic();
var a: Array<Dynamic> = d.a;
for (t in a) { ... }
Не связан с StackOverflow