6

我正在写 Haxe 并针对 Neko。今天我遇到了这个问题:

var a:Array<Array<Int>> = new Array<Array<Int>>();
a[1] = [1, 2, 3];

第二行抛出“无效的数组访问”异常。同样不可能像这样迭代行:

for (i in a[0]) ...

像这样的代码总是可以正常工作,但不是今天的代码。这里可能是什么问题?我试图访问的单元格和行保证存在(如果谈论索引)。

4

1 回答 1

8

这个问题不是 Neko 特有的:= new Array<Array<Int>>() 只初始化外部数组——它相当于 write = []。由于它是一个空数组,因此任何访问都将超出范围并返回null

对于您的特定示例,= [[], []]将修复错误(使用两个内部数组初始化一个数组)。如果您事先知道所需的内部数组的数量,数组推导是一种方便的初始化方法:

var a:Array<Array<Int>> = [for (i in 0...numInnerArrays) []];
于 2018-04-29T10:42:29.567 回答