我尝试使用代码,其片段如下:

void main() {
  List someData = [1.5, 2.0, 6.8, 1.5, 3.0, 1.5, 6.8];

  Map<double, int> formedMap = Map();

  someData.forEach((element){
    formedMap.update(element, (value) => value++, ifAbsent: () => 1);
  });
  print(formedMap);
}

此代码返回
formedMap={1.5: 1, 2: 1, 6.8: 1, 3: 1}

代替
formedMap={1.5: 3, 2: 1, 6.8: 2, 3: 1}

我用另一种方式解决了这个片段的任务。但我想知道这个错误的原因。这是我的失败还是 Dart 特性?

最佳答案

问题是:在递增之前返回该值。

https://dart.dev/guides/language/language-tour#operators看一下
dart - 增量可以在 map 更新方法中使用吗? ( Dart 。)-LMLPHP

因此,请使用++value而不是value++
像这样

  someData.forEach((element){
    formedMap.update(element, (value) => ++value, ifAbsent: () => 1);
  });
  print(formedMap);

关于dart - 增量可以在 map 更新方法中使用吗? ( Dart 。),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/62049812/

10-09 17:19