索引多维列表时,我得到一个奇怪的结果。以以下为例:
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次。如果在内部列表中添加非基本类型,则也可以在此处使用generate。