如何在Dart映射和null安全中使用*=和+=等操作符



如果我有一个这样的映射:

Map<String, int> myMap = Map();

添加键和值:

myMap.putIfAbsent("yolo", 1000);

然后使用+=

这样的运算符添加一个数字myMap["yolo"] += 100;

在null安全条件下,它抛出一个错误:

方法'+'不能被无条件调用,因为接收者可以是'null'。

在map中,基于键设置值的最佳方法是什么?

这个错误是预料之中的。如果您的map不包含键为"yolo"的条目,那么调用myMap["yolo"] += 100;将导致运行时null错误。

如果0是一个合理的"默认值"对于这个上下文中,您可以这样写:

myMap["yolo"] = (myMap["yolo"] ?? 0) + 100;

最新更新