flutter - 空安全和地图
问题描述
您如何处理以下情况:
void main() {
print(getInt('d'));
}
Map<String, int> myMap = {'a':1, 'b':2, 'c':3};
int getInt(String key) {
if (!myMap.containsKey(key)) {
myMap[key] = 0;
}
return myMap[key]!;
}
myMap[key]
永远不会为空,但如果我删除!
ofreturn myMap[key]!;
我会得到空安全错误:
'int?' 类型的值 无法从函数“getInt”返回,因为它的返回类型为“int”。
用 丢弃可空性是否合适!
,还是有更清洁的方法?
解决方案
不确定清洁剂是什么意思,并且!
确实存在是有原因的。
您可以将该 if 语句简化为一行:
int getInt(String key) {
myMap[key] ??= 0;
return myMap[key]!;
}
推荐阅读
- postgresql - Postgresql,仅与 ssl 连接
- angular - 如何在角度 8 中测试窗口:popstate?
- c++ - 如何使用重载的相等(==)运算符向测试用例添加描述?
- arrays - json / jq : 数组中子元素的多级分组
- office365 - 在 Office 365 中使用 Microsoft.Office.Interop.Word 添加
- azure - Azure AutoML 返回评分概率,如 Azure ML Studio Webservice
- react-native - 如何将 axios 调用与 react native 中的组件分开?
- junit5 - 为 Junit5 的 @ParameterizedTest 中的所有测试运行一次 @Before 方法
- python - 如何根据存在值的列名创建新的数据框?
- python-3.x - 多次从 ui 文件加载 QGroupbox