Menu
CoddyTech

空值感知访问

本课属于 Coddy Dart 学习旅程的“基础知识”单元。第 29 课,共 94 课。

空值感知访问运算符(?.)可以安全地访问可能为空的对象的属性,避免运行时错误。

void main() {
  String? name = 'Dart';
  int? length = name?.length;
  
  print('Name: $name');
  print('Length: $length');
}

遇到 null 值时,它会返回 null,而不是崩溃:

void main() {
  String? name = null;
  int? length = name?.length;
  
  print('Name: $name');
  print('Length: $length');
}
challenge icon

挑战

简单

创建一个 Dart 程序,演示游戏角色中空安全访问运算符(?.)的用法:

  1. 创建一个名为 playerName 的可空 String 变量,并将它设为 null
  2. 创建一个名为 playerScore 的可空 int 变量,并将它设为 100
  3. 使用空安全访问运算符(?.)获取 playerName 的长度,并将结果存入名为 nameLength 的变量
  4. 打印以下消息:Player name length: X(其中 X 是 nameLength 的值)
  5. 将 playerName 更新为 "Champion"
  6. 再次使用空安全访问运算符获取更新后的长度,并将结果存入 nameLength
  7. 打印更新后的消息:Player name length: X(其中 X 是新值)
  8. 按以下格式打印玩家的分数:Player score: 100

亲手试试

void main() {
  // 在这里声明你的可空变量
  String? playerName = _;
  int? playerScore = _;
  
  // 使用 ?. 运算符获取 playerName 的长度
  int? nameLength = playerName_.length;
  
  // 打印初始名字的长度
  print("Player name length: ${nameLength}");
  
  // 更新 playerName
  playerName = _;
  
  // 使用 ?. 运算符获取更新后的长度
  nameLength = playerName_.length;
  
  // 打印更新后名字的长度
  print("Player name length: ${nameLength}");
  
  // 打印玩家的分数
  print("Player score: ${playerScore}");
}
quiz icon自我测试

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

基础知识中的所有课

自己练习: Dart 在线编译器