Kodokon kodokon.com

Dart 基础:变量、函数与空安全

学习如何把值存入带类型的变量、编写函数,并理解针对 null 的保护机制。

10 分钟 · 3 题

在 Kodokon 中打开本课

在构建界面之前,我们先来学习 Flutter 的语言 Dart 的基础知识。变量是计算机内存中一个贴着标签的盒子,你把一个值存进去,以便日后复用。在 Dart 中,每个变量都有一个类型:也就是它所能容纳内容的性质。四种最常见的类型是 int(整数,比如 28)、double(小数,比如 1.65)、String字符串,也就是引号之间的文本)以及 bool布尔值truefalse)。var 关键字能让 Dart 根据你提供的值自行推断出类型。

DART
void main() {
  var name = "Camille";
  int age = 28;
  double height = 1.65;
  bool isStudent = true;
  print(name);
  print(age);
  print(height);
  print(isStudent);
}
声明四个变量并打印它们

print 会把一个值显示在控制台里,也就是程序写入消息的那块文本区域:用来查看运行情况非常方便。要在一段文本中间插入一个变量,Dart 提供了插值功能:直接在字符串内部、变量名前面放上 $ 符号即可。另一个有用的关键字 final 声明的变量在拿到第一个值之后就再也不能改变:只要某个值不打算发生变化,就该用它。

DART
void main() {
  final city = "Lyon";
  var temperature = 21;
  print("In $city, it is $temperature degrees.");
}
插值把变量插入到文本中

函数是一小段可复用、并且有名字的代码块,它可以接收参数(写在圆括号里的输入值),并用 return 关键字返回一个结果。声明函数时,先写结果的类型,再写它的名字,然后是它的参数。void 类型表示 "不返回任何东西":程序入口点 main 就是这种情况。

DART
int add(int a, int b) {
  return a + b;
}

String greet(String name) {
  return "Hello, $name!";
}

void main() {
  print(add(2, 3));
  print(greet("Nadia"));
}
两个函数:一个返回数字,另一个返回文本

最后一个关键概念:空安全null 是一个特殊的值,表示 "什么都没有、没有值"。被遗忘的 null 一直是导致应用崩溃的主要原因之一。Dart 会保护你:默认情况下,一个变量不能持有 null。要显式地允许它,就在类型后面加一个问号:String? 读作 "一个字符串,或者什么都没有"。而 ?? 运算符则提供一个后备值,仅在变量为 null 时才使用。

DART
void main() {
  String? nickname;
  print(nickname ?? "No nickname yet");
  nickname = "Momo";
  print(nickname);
}
? 允许 null,而 ?? 提供一个后备值

知识检测

确认你已牢记本课的重点内容。

  1. 哪种 Dart 类型适合用来存储 true 或 false?
    • int
    • String
    • bool
    • double
  2. 声明 String? nickname 是什么意思?
    • nickname 变量可以持有文本或 null
    • nickname 变量是必填的,必须被赋值
    • 编译器必须猜测 nickname 的类型
  3. 对于 int add(int a, int b) { return a + b; }print(add(2, 3)) 会显示什么?
    • 2 + 3
    • 5
    • 一个编译错误