在 Dart 中索引多维列表时出现意外结果
Unexpected result when indexing a multidimensional List in 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]]
}
当我尝试用一个值替换索引 [2][1] 时,该值被放置在所有子列表中。
你知道为什么会这样吗?我怎样才能得到预期的结果?
感谢您的帮助!
我认为您需要使用 generate
而不是 filled
var multiList = new List.generate(4, (i) => new List.filled(4, "x"));
否则只会创建一个new List.filled(4, "x")
并插入4次。如果您在内部列表中添加非基本类型,那么也可以在那里使用生成。
我在为多维列表建立索引时得到了一个奇怪的结果。以下面的例子:
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]]
}
当我尝试用一个值替换索引 [2][1] 时,该值被放置在所有子列表中。
你知道为什么会这样吗?我怎样才能得到预期的结果?
感谢您的帮助!
我认为您需要使用 generate
而不是 filled
var multiList = new List.generate(4, (i) => new List.filled(4, "x"));
否则只会创建一个new List.filled(4, "x")
并插入4次。如果您在内部列表中添加非基本类型,那么也可以在那里使用生成。