Dart-如何初始化锯齿状数组?

时间:2018-12-23 06:02:42

标签: dart flutter

我正在尝试初始化一个交错的零数组。我以为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]]

初始化锯齿状数组的正确方法是什么,以使每个子数组不仅仅是指向同一列表的指针?

1 个答案:

答案 0 :(得分:0)

如果每个索引应该具有唯一值,请使用List.generate代替List.filled

var matrix = List.generate(4, (_) => List.filled(4, 0));