在Dart中索引多维List时出现意外结果

Dar*_*-on 3 dart

索引多维列表时,我得到一个奇怪的结果.以下面的例子为例:

void main() {
  var multiList = new List.filled(4, new List.filled(4, "x"));
  print(multiList);
  // [[x, x, x, x], [x, x, x, x], [x, x, x, x], [x, x, x, x]]
  multiList[2][1] = "A";
  print(multiList);
  // [[x, A, x, x], [x, A, x, x], [x, A, x, x], [x, A, x, x]]
  // Expected result:
  // [[x, x, x, x], [x, x, x, x], [x, A, x, x], [x, x, x, x]]
}
Run Code Online (Sandbox Code Playgroud)

当我尝试用值替换index [2] [1]时,该值将放在所有子列表中.

你知道为什么会这样吗?我怎样才能获得预期的结果呢?

谢谢您帮忙!

Gün*_*uer 5

我认为你需要使用generate而不是filled

var multiList = new List.generate(4, (i) => new List.filled(4, "x"));
Run Code Online (Sandbox Code Playgroud)

否则只new List.filled(4, "x")创建一个并插入4次.如果在内部列表中添加非基本类型,则也使用generate.