将新对添加到地图时,我捕获了以下错误。
Variables must be declared using the keywords const, final, var, or a type nameExpected to find ;the name someMap is already defined我执行了以下代码。
Map<String, int> someMap = {
"a": 1,
"b": 2,
};
someMap["c"] = 3;
Run Code Online (Sandbox Code Playgroud)
我应该如何在地图上添加一对新货币对?
我也想知道如何使用Map.update。
Sur*_*gch 28
您可以通过指定这样的新键来向 Dart 中的 Map 添加新对:
Map<String, int> map = {
'a': 1,
'b': 2,
};
map['c'] = 3; // {a: 1, b: 2, c: 3}
Run Code Online (Sandbox Code Playgroud)
根据评论,它对 OP 不起作用的原因是这需要在方法内部完成,而不是在顶层完成。
Abd*_*dir 15
Map<String, dynamic> someMap = {
'id' : 10,
'name' : 'Test Name'
};
someMethod(){
someMap.addAll({
'email' : 'test@gmail.com'
});
}
printMap(){
print(someMap);
}
Run Code Online (Sandbox Code Playgroud)
确保您无法在声明的正下方添加条目。
Par*_*iya 11
有两种方法可以向 Map 添加项目(键值对):
1.使用方括号 []
2.调用putIfAbsent()方法
Map map = {1: 'one', 2: 'two'};
map[3] = 'three';
print(map);
var threeValue = map.putIfAbsent(3, () => 'THREE');
print(map);
print(threeValue); // the value associated to key, if there is one
map.putIfAbsent(4, () => 'four');
print(map)
Run Code Online (Sandbox Code Playgroud)
; 输出:
{1: one, 2: two, 3: three}
{1: one, 2: two, 3: three}
three
{1: one, 2: two, 3: three, 4: four}
Run Code Online (Sandbox Code Playgroud)
您可以使用该addAll()方法将另一个 Map 的所有键/值对添加到当前 Map 。
Map map = {1: 'one', 2: 'two'};
map.addAll({3: 'three', 4: 'four', 5: 'five'});
print(map);
Run Code Online (Sandbox Code Playgroud)
输出:
{1: one, 2: two, 3: three, 4: four, 5: five}
Run Code Online (Sandbox Code Playgroud)
这种方式也适用:
Map<String, int> someMap = {
"a": 1,
"b": 2,
};
someMap.addEntries({"c":3}.entries);
Run Code Online (Sandbox Code Playgroud)
要在Flutter中声明地图,您可能需要final:
final Map<String, int> someMap = {
"a": 1,
"b": 2,
};
Run Code Online (Sandbox Code Playgroud)
然后,您的更新应该可以正常工作:
someMap["c"] = 3;
Run Code Online (Sandbox Code Playgroud)
最后,该update函数具有两个需要传递的参数,第一个是键,第二个是本身被赋予一个参数(现有值)的函数。例:
someMap.update("a", (value) => value + 100);
Run Code Online (Sandbox Code Playgroud)
如果在所有这些之后打印地图,您将获得:
{a: 101, b: 2, c: 3}
Run Code Online (Sandbox Code Playgroud)
将新键/值作为映射添加到现有映射的另一种方法是:
oldMap.addEntries(myMap.entries);
Run Code Online (Sandbox Code Playgroud)
这将更新;oldMap的键/值myMap
| 归档时间: |
|
| 查看次数: |
4106 次 |
| 最近记录: |