如何让Dart中List的某个元素保持不可修改?
Dart遍历修改List:跳过第二个元素
首先纠正你代码里的两个问题:
final list[1] = 1;是语法错误,final不能用来给List的单个元素赋值,直接写list[1] = 1;才是正确的赋值方式,但这不是遍历修改的场景。for(i in list)循环中,i是List的元素值而非索引,比如你的初始List是[0,0,0],循环里i会依次取0、0、0,这样修改的始终是list[0],逻辑完全错误。
下面是几种正确实现“遍历修改List,除第二个元素外全部修改”的写法:
方法1:普通for循环(遍历索引)
最直观的方式,通过索引判断是否跳过第二个元素(索引为1):
void main() { List list = [0, 0, 0]; for (int index = 0; index < list.length; index++) { if (index != 1) { list[index] = 2; } } print(list); // 输出: [2, 0, 2] }
方法2:asMap() + forEach
利用asMap()将List转为索引-元素的映射,再遍历处理:
void main() { List list = [0, 0, 0]; list.asMap().forEach((index, _) { if (index != 1) { list[index] = 2; } }); print(list); // 输出: [2, 0, 2] }
方法3:创建新List(不修改原List)
如果不需要修改原List,而是生成一个新List,可以用map方法:
void main() { List list = [0, 0, 0]; List newList = list.asMap().entries.map((entry) { return entry.key != 1 ? 2 : entry.value; }).toList(); print(newList); // 输出: [2, 0, 2] }
内容的提问来源于stack exchange,提问作者Aléxxxiy69
相关产品推荐
相关产品推荐

