📅  最后修改于: 2023-12-03 15:00:20.056000             🧑  作者: Mango
在 Dart 中,Null 感知是一种特别的编码方式,可以让你在处理空值时代码更加简单和安全。
为了帮助我们处理空值,Dart 提供了几个 Null-aware 操作符:
??
??
操作符用于判断一个对象是否为 null,并提供了一个默认值来取代它。
var value;
print(value ?? 'default value'); // 输出 'default value'
如果 value
是 null,那么 ??
操作符会返回默认值 'default value'
,否则它会返回 value
。
?.
?.
操作符用于在评估属性或调用方法之前检查一个对象是否为 null。如果对象为 null,则不会评估表达式的余下部分。
var obj;
var value = obj?.property;
如果 obj
是 null,那么 property
不会被评估,并且 value
将为 null。如果 obj
不是 null,那么 property
会被评估并赋值给 value
。
?.[]
?.[]
操作符用于在评估索引或键之前检查一个对象是否为 null。如果对象为 null,则不会评估表达式的余下部分。
var list;
var value = list?[0];
如果 list
是 null,那么索引 [0]
不会被评估,并且 value
将为 null。如果 list
不是 null,那么索引 [0]
会被评估并赋值给 value
。
Null-aware spread (...?
) 操作符用于将可为 null 的列表或 map 展开成另一个列表或 map。如果可为 null,则不会对其进行展开。
var list = [1, 2, null, 4];
var newList = [...?list];
print(newList); // 输出 [1, 2, 4]
在这个例子中,newList
没有包含 null
值,因为 list
中的 null
值被忽略了。
Null 感知是 Dart 中非常重要的概念,在代码中扮演着重要的角色。熟练掌握 Null-aware 操作符和 Null-aware spread 操作符,可以使你的代码更加精简、易于维护和安全。