You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何Dart中filled创建的嵌套列表添加元素会影响所有子列表?

为什么Dart中嵌套列表修改一个子列表会影响所有?

你遇到的问题核心在于List.filled方法的工作机制:它会将同一个对象引用填充到列表的所有位置。

看你的代码:

List<List<int>> list = List<List<int>>.filled(2, []);
list[0].add(1);
print(list);

这里的[]是一个单独的空List实例,filled(2, [])做的事情是把这个实例的引用复制到新列表的两个索引位置上。也就是说,list[0]和list[1]指向的是同一个列表对象。当你调用list[0].add(1)时,你其实是在给那个唯一的列表添加元素,自然两个位置都会显示出这个变化,最终输出[[1], [1]]。

要解决这个问题,你需要为每个索引创建独立的子列表,推荐使用List.generate方法,它会为每个索引执行一次回调函数,生成新的列表实例:

List<List<int>> list = List.generate(2, (_) => []);
list[0].add(1);
print(list); // 输出 [[1], []]

这里的(_) => []会在每次循环时创建一个新的空列表,这样list[0]和list[1]就是完全独立的两个对象,修改其中一个不会影响另一个。

内容的提问来源于stack exchange,提问作者ulmas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 03:25:28