微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在 For-Loop Dart 中映射 addAll Overwrite

如何解决在 For-Loop Dart 中映射 addAll Overwrite

我在 Map 迭代方面遇到问题。

我试过了

{'Computer': [67.0,22.0]}

据我所知,这段代码等于,

List testList = [];
Map<String,dynamic> testMap = new Map;
for (var i = 0; i < 3; i++) {
    testMap.addAll({'name': 'name $i'});
    testList.add(testMap);
  }
print(testList);

第二个代码工作得很好并给出了我预期的结果,但第一个代码没有。这是第一个结果。

testList.add({'name': 'name 0'});
testList.add({'name': 'name 1'};
testList.add({'name': 'name 2'});

所以 addAll 是添加新的,同时覆盖以前的。我尝试了另一种方法,例如 [{name: name 2},{name: name 2},{name: name 2}] 但它没有用。 我想知道我做错了什么。或者有更好的方法吗?

dartpad.dev

解决方法

由于 dart 中的这种情况是通过引用传递的,因此您需要在每个循环中创建“新”地图。喜欢

List testList = [];
for (var i = 0; i < 3; i++) {
    Map<String,dynamic> testMap = new Map();
    testMap.addAll({'name': 'name $i'});
    testList.add(testMap);
  }
print(testList);

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。