空值感知运算符
本课属于 Coddy Dart 学习旅程的“基础知识”单元。第 28 课,共 94 课。
空值感知运算符(??)会在左侧表达式不为 null 时返回它,否则返回右侧表达式。
void main() {
String? name = 'Dart';
String displayName = name ?? 'Guest';
print('Hello, $displayName!');
}void main() {
String? name = null;
String displayName = name ?? 'Guest';
print('Hello, $displayName!');
}void main() {
int? score; // 没有初始值,默认值为 null
int displayScore = score ?? 0;
print('Your score: $displayScore');
// 在程序后面,score 会被赋值
score = 100;
displayScore = score ?? 0;
print('Your updated score: $displayScore');
}挑战
简单创建一个程序,演示 Dart 中的空值感知运算符(??):
- 声明一个可空的 String 变量,命名为
username,并将其设为null - 声明一个可空的 int 变量,命名为
userAge,并将其设为null - 如果
username为 null,使用空值感知运算符将默认值"Guest"赋给新变量displayName - 如果
userAge为 null,使用空值感知运算符将默认值18赋给新变量displayAge - 按照以下确切格式打印这些值:
Username: Guest (default value used)
Age: 18 (default value used)然后:
- 将
username更新为"DartUser" - 将
userAge更新为25 - 使用更新后的值重复步骤 3 和 4
- 按照以下确切格式打印这些值:
Username: DartUser (original value used)
Age: 25 (original value used)亲手试试
void main() {
// 声明可空变量
String? username = _;
int? userAge = _;
// 使用空值感知运算符设置默认值
String displayName = username ?? _;
int displayAge = userAge ?? _;
// 打印初始值
print("Username: $displayName (default value used)");
print("Age: $displayAge (default value used)");
// 更新变量
username = _;
userAge = _;
// 再次使用空值感知运算符
displayName = username _ "Guest";
displayAge = userAge _ 18;
// 打印更新后的值
print("Username: $displayName (original value used)");
print("Age: $displayAge (original value used)");
}这节课包含一个小测验。开始学习即可作答,并记录你的进度。
基础知识中的所有课
自己练习: Dart 在线编译器