📜  dart null 感知 - Dart (1)

📅  最后修改于: 2023-12-03 15:00:20.056000             🧑  作者: Mango

Dart null 感知 - Dart

在 Dart 中,Null 感知是一种特别的编码方式,可以让你在处理空值时代码更加简单和安全。

Null-aware operators

为了帮助我们处理空值,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 operator

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 值被忽略了。

Conclusion

Null 感知是 Dart 中非常重要的概念,在代码中扮演着重要的角色。熟练掌握 Null-aware 操作符和 Null-aware spread 操作符,可以使你的代码更加精简、易于维护和安全。