基础空安全
本课属于 Coddy Dart 学习旅程的“基础知识”单元。第 14 课,共 94 课。
空安全通过控制哪些变量可以为空(null),帮助防止应用意外崩溃。
默认情况下,变量必须包含一个值:
void main() {
String name = 'Dart';
print(name); // 输出:Dart
// 这样会出问题:
// name = null; // 不允许
}在类型后添加 ?,以允许 null 值:
void main() {
String? name = 'Dart';
print(name); // 输出:Dart
// 现在可以赋值为 null
name = null;
print(name); // 输出:null
}你可以声明任何类型的可空变量:
void main() {
int? age; // 没有初始值,默认为 null
double? price = 19.99;
bool? isAvailable = true;
print(age); // 输出:null
print(price); // 输出:19.99
print(isAvailable); // 输出:true
// 我们可以把其中任意一个改为 null
price = null;
isAvailable = null;
}
空安全有助于保护你的应用,避免代码在操作中尝试使用 null 值时发生意外崩溃。
挑战
入门编写一个 Dart 程序,使用 ? 运算符演示基本的空安全:
- 声明一个名为
username的 String 变量,并使用空安全运算符?将其设为null(String?) - 声明一个名为
userAge的 int 变量,并使用空安全运算符将其设为null - 按照以下确切格式打印这两个变量及其标签:
Username: null
User age: null然后:
- 将值
"DartLearner"赋给username变量 - 将值
25赋给userAge变量 - 再次按照与之前完全相同的格式打印这两个变量
你的输出必须与上面显示的确切格式一致。
亲手试试
void main() {
// 在这里声明你的可空变量
String? username = ?;
int? userAge = ?;
// 打印初始值并加上标签
print("Username: " + username.toString());
print("User age: " + userAge.toString());
// 给变量赋新值
username = ?;
userAge = ?;
// 用相同的标签打印更新后的值
print("Username: " + username.toString());
print("User age: " + userAge.toString());
}这节课包含一个小测验。开始学习即可作答,并记录你的进度。
基础知识中的所有课
自己练习: Dart 在线编译器