Работает ли инкремент в методе обновления карты? (Дротик.) - PullRequest
0 голосов
/ 27 мая 2020

Я пробовал использовать код, который имеет фрагмент, подобный следующему:

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}

Я решил Задача этого фрагмента другим способом. Но хотелось бы узнать причину этой ошибки. Это мои свойства провала или дротика?

1 Ответ

1 голос
/ 27 мая 2020

Проблема: значение возвращается до увеличения.

Взгляните на это из https://dart.dev/guides/language/language-tour#operators enter image description here

Поэтому используйте ++value вместо value++

вот так

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