For-Loop Dart 中的 Map addAll Overwrite
Map addAll Overwrite in For-Loop Dart
我有地图迭代问题。
我试过了
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'});
第二个代码工作正常并给出了我预期的结果,但第一个代码没有。这是第一个结果。
[{name: name 2}, {name: name 2}, {name: name 2}]
所以 addAll 是在添加新的同时覆盖以前的。我尝试了另一种方法,比如 testMap['name']='name $i';
但它没有用。
我想知道我做错了什么。或者有更好的方法吗?
由于 dart 中的这种情况是通过引用传递的,因此您需要在每个循环中创建 'new' Map。喜欢
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);
我有地图迭代问题。
我试过了
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'});
第二个代码工作正常并给出了我预期的结果,但第一个代码没有。这是第一个结果。
[{name: name 2}, {name: name 2}, {name: name 2}]
所以 addAll 是在添加新的同时覆盖以前的。我尝试了另一种方法,比如 testMap['name']='name $i';
但它没有用。
我想知道我做错了什么。或者有更好的方法吗?
由于 dart 中的这种情况是通过引用传递的,因此您需要在每个循环中创建 'new' Map。喜欢
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);