我正在尝试初始化一个交错的零数组。我以为List::filled
是应该走的路,但是我错了。
void main() {
List<List<int>> matrix = new List.filled(4, new List<int>.filled(4, 0));
print('before: $matrix');
matrix[2][3] = 1; // change a single cell
print('after: $matrix');
}
输出不正确。尽管有new
关键字,Dart还是重用了子列表:
之前:[[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0]]
之后:[[0,0,0,1],[0,0,0,1],[0,0,0,1],[0,0,0,1]]
初始化锯齿状数组的正确方法是什么,以使每个子数组不仅仅是指向同一列表的指针?
答案 0 :(得分:0)
如果每个索引应该具有唯一值,请使用List.generate
代替List.filled
:
var matrix = List.generate(4, (_) => List.filled(4, 0));