Menu
CoddyTech

空值感知运算符

本课属于 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');
}
challenge icon

挑战

简单

创建一个程序,演示 Dart 中的空值感知运算符(??):

  1. 声明一个可空的 String 变量,命名为 username,并将其设为 null
  2. 声明一个可空的 int 变量,命名为 userAge,并将其设为 null
  3. 如果 username 为 null,使用空值感知运算符将默认值 "Guest" 赋给新变量 displayName
  4. 如果 userAge 为 null,使用空值感知运算符将默认值 18 赋给新变量 displayAge
  5. 按照以下确切格式打印这些值:
Username: Guest (default value used)
Age: 18 (default value used)

然后:

  1. 将 username 更新为 "DartUser"
  2. 将 userAge 更新为 25
  3. 使用更新后的值重复步骤 3 和 4
  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)");
}
quiz icon自我测试

这节课包含一个小测验。开始学习即可作答,并记录你的进度。

基础知识中的所有课

自己练习: Dart 在线编译器