Dart通过map函数映射到另一个地图

ron*_*ron 4 dart

假设我有一张地图:

Map<String, int> source = {'a':1, 'b':2, 'c':3};
Run Code Online (Sandbox Code Playgroud)

我想得到这个:

Map<String, int> expected = {'a': 1, 'b':4, 'c':9 };
Run Code Online (Sandbox Code Playgroud)

我想使用map函数来实现结果:

Map<String,int> actual = source.map((key,value)=> {key: value * value});
Run Code Online (Sandbox Code Playgroud)

但是,我收到了这个错误:

The return type 'Map<String, int>' isn't a 'MapEntry<String, int>', as required by the closure's context
Run Code Online (Sandbox Code Playgroud)

难道我们不能使用map的map函数来获取另一个这样的地图吗?

jul*_*101 10

映射方法应该返回一个 MapEntry 实例,因为您可以更改键和值。所以你的代码应该是这样的:

void main() {
  final source = {'a': 1, 'b': 2, 'c': 3};
  final actual = source.map((key, value) => MapEntry(key, value * value));
  print(actual); // {a: 1, b: 4, c: 9}
}
Run Code Online (Sandbox Code Playgroud)