Haxe和数组动态类型

时间:2020-03-05 18:50:01  来源:igfitidea点击:

我知道这不太可能,但是也许有人会懂Haxe语言。
我有一个动态类型的变量,我肯定知道它的一个字段,让我们称它为" a"实际上是一个数组。但是当我写的时候

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

我在第二行收到一个编译错误,说"我们不能对Dynamic值进行迭代,请指定Iterator或者Iterable"。如何使它可编译?

解决方案

回答

haXe无法遍历动态变量(如编译器所说)。

我们可以通过多种方式使它工作,而这可能是最简单的(取决于情况):

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

我们也可以将Dynamic更改为数组内容的类型。

PS:是的!

回答

另一种方法是使用额外的temp变量和显式键入:

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