如何在 Dart 中向 Map 添加新对?
How to add a new pair to Map in Dart?
我在将新对添加到地图时遇到以下错误。
Variables must be declared using the keywords const, final, var, or a type name
Expected to find;
the name someMap is already defined
我执行了以下代码。
Map<String, int> someMap = {
"a": 1,
"b": 2,
};
someMap["c"] = 3;
我应该如何向地图添加新的一对?
我也想知道如何使用Map.update
。
要在 Flutter 中声明地图,您可能需要 final
:
final Map<String, int> someMap = {
"a": 1,
"b": 2,
};
那么,您的更新应该会起作用:
someMap["c"] = 3;
最后,update
函数有两个参数需要传递,第一个是键,第二个是一个函数,它本身有一个参数(现有值)。示例:
someMap.update("a", (value) => value + 100);
如果您在所有这些之后打印地图,您将得到:
{a: 101, b: 2, c: 3}
您可以通过像这样指定新键将新对添加到 Dart 中的映射:
Map<String, int> map = {
'a': 1,
'b': 2,
};
map['c'] = 3; // {a: 1, b: 2, c: 3}
根据评论,它对 OP 不起作用的原因是这需要在方法内部完成,而不是在顶层。
将新 key/value 作为地图添加到现有地图的另一种方法是,
oldMap.addEntries(myMap.entries);
这会将 oldMap
更新为 myMap
的 key/value;
Map<String, dynamic> someMap = {
'id' : 10,
'name' : 'Test Name'
};
someMethod(){
someMap.addAll({
'email' : 'test@gmail.com'
});
}
printMap(){
print(someMap);
}
确保您不能在声明的正下方添加条目。
我写了这个实用程序:
Map updateMap({
/// Update a map with another map
/// Example:
/// Map map1 = {'name': 'Omid', }
/// Map map2 = {'family': 'Raha', }
/// Map map = updateMap(data:map1, update:map2);
/// Result:
/// map = {'name': 'Omid', 'family': 'Raha',}
@required Map data,
@required Map update,
}) {
if (update == null) return data;
update.forEach((key, value) {
data[key] = value;
});
return data;
}
示例:
Map map1 = {'name': 'Omid', }
Map map2 = {'family': 'Raha', }
Map map = updateMap(data:map1, update:map2);
print(map);
{'name': 'Omid', 'family': 'Raha',}
我在将新对添加到地图时遇到以下错误。
Variables must be declared using the keywords const, final, var, or a type name
Expected to find;
the name someMap is already defined
我执行了以下代码。
Map<String, int> someMap = {
"a": 1,
"b": 2,
};
someMap["c"] = 3;
我应该如何向地图添加新的一对?
我也想知道如何使用Map.update
。
要在 Flutter 中声明地图,您可能需要 final
:
final Map<String, int> someMap = {
"a": 1,
"b": 2,
};
那么,您的更新应该会起作用:
someMap["c"] = 3;
最后,update
函数有两个参数需要传递,第一个是键,第二个是一个函数,它本身有一个参数(现有值)。示例:
someMap.update("a", (value) => value + 100);
如果您在所有这些之后打印地图,您将得到:
{a: 101, b: 2, c: 3}
您可以通过像这样指定新键将新对添加到 Dart 中的映射:
Map<String, int> map = {
'a': 1,
'b': 2,
};
map['c'] = 3; // {a: 1, b: 2, c: 3}
根据评论,它对 OP 不起作用的原因是这需要在方法内部完成,而不是在顶层。
将新 key/value 作为地图添加到现有地图的另一种方法是,
oldMap.addEntries(myMap.entries);
这会将 oldMap
更新为 myMap
的 key/value;
Map<String, dynamic> someMap = {
'id' : 10,
'name' : 'Test Name'
};
someMethod(){
someMap.addAll({
'email' : 'test@gmail.com'
});
}
printMap(){
print(someMap);
}
确保您不能在声明的正下方添加条目。
我写了这个实用程序:
Map updateMap({
/// Update a map with another map
/// Example:
/// Map map1 = {'name': 'Omid', }
/// Map map2 = {'family': 'Raha', }
/// Map map = updateMap(data:map1, update:map2);
/// Result:
/// map = {'name': 'Omid', 'family': 'Raha',}
@required Map data,
@required Map update,
}) {
if (update == null) return data;
update.forEach((key, value) {
data[key] = value;
});
return data;
}
示例:
Map map1 = {'name': 'Omid', }
Map map2 = {'family': 'Raha', }
Map map = updateMap(data:map1, update:map2);
print(map);
{'name': 'Omid', 'family': 'Raha',}