Flutter|如何在Dart中更新一个键值对的地图

366 阅读1分钟

在使用地图时,一个常见的要求是:

  • 如果一个给定的键已经存在,则更新该值
  • 如果存在,则设置该值

你可能很想实现一些条件逻辑来处理这个问题。

class ShoppingCart {
  final Map<String, int> items = {};

  void add(String key, int quantity) {
    if (items.containsKey(key)) {
      // item exists: update it
      items[key] = quantity + items[key]!;
    } else {
      // item does not exist: set it
      items[key] = quantity;
    }
  }
}

或者,一个更短的版本是。

class ShoppingCart {
  final Map<String, int> items = {};

  void add(String key, int quantity) {
    // add 0 if items[key] does not exist
    items[key] = quantity + (items[key] ?? 0);
  }
}

不管怎么说,这段代码的可读性都不高。

update() 方法提供了一种更简单(也更有表现力)的方式来做同样的事情:👇

class ShoppingCart {
  final Map<String, int> items = {};

  void add(String key, int quantity) {
    items.update(
      key,
      (value) => quantity + value,
      ifAbsent: () => quantity,
    );
  }
}

在这里了解更多。Map.update()方法

编码愉快!

在使用地图时,一个常见的要求是:

- 如果一个给定的键已经存在,则更新其值-
如果不存在,则设置其值你

可能会想实现一些条件逻辑来处理这个问题。

但是update()方法提供了一种更简单的方式来做同样的事情:👇pic.twitter.com/7UMrqnARxd-

Andrea Bizzotto 💙 (@biz84)April 2022