dart - 有没有更好的方法在 Dart 构造函数中测试 null
问题描述
我正在使用以下构造函数构造一个对象:
class A {
int col;
int row;
A.fromMap(Map<dynamic, dynamic> data)
: col = data['col'],
row = data['row'];
}
class B {
A aObj;
int objType;
int count;
B.fromMap(Map<dynamic, dynamic> data)
: objType = data['objType'],
count = data['count'],
aObj = A.fromMap(data['A']);
}
问题是,如果我传入的地图没有 aObj 的映射,它就会崩溃。我尝试将作业移到大括号中并测试是否为空:
if(data['A'] != null) {
aObj = A.fromMap(data['A']);
}
这行得通。但我想像在其他数据成员中一样作为快捷方式构造函数的一部分进行测试。
那可能吗?
解决方案
我认为如何以一种简洁的方式防止崩溃是这样的:
aObj = A.fromMap(data['A'] ?? Map())
这将在is时向您的自定义构造函数返回一个空 值,这将导致之后(如果是),因为字段不存在于.Map
A.fromMap
data['A']
null
col
row
null
data['A']
null
Map
推荐阅读
- sql - SQL Server 2014 - 模拟和 CTE 循环
- r - 多个axis.text.x名称着色不适用于ggplotly()
- azure - 移动到另一个资源组后更改应用服务计划不起作用
- google-apps-script - 服务错误:Spreadsheets(line... with .setColumnFilterCriteria
- php - Laravel 路线不适用于特定情况
- java - 将很长的 jtable 打印到多个页面中
- java - 如何解决 java.lang.ClassNotFoundException:org.springframework.security.core.context.SecurityContextHolder
- pyspark - 将 pyspark DF 写入 Redshift
- jquery - 使用父尺寸作为图像属性
- eclipse - 为 TreeViewerColumn 添加监听器