Вопрос

У меня есть переменная типа 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) { ... }
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top