Dart Academy · 课时

默认值和 required

让参数变为可选或必需

第 3 / 4 课13 个步骤

默认值和 required 是 CoddyKit 上的免费 Dart Academy 课时。 这是第 3 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Dart Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Dart Academy 课程共包含 4 节课。

合理的备用值

默认值是调用者跳过参数时 Dart 使用的备用值。它让调用者不必每次都传入那个显而易见的选择。

为命名参数设置默认值

使用等号为命名参数指定默认值。如果调用者省略该参数,Dart 会安静地使用这个值,而不是使用 null。

void greet({String name = "friend"}) {
  print("Hi $name");
}

使用默认值调用

跳过参数时,默认值就会生效。传入值后,该值会在这一次调用中覆盖备用值。

greet();            // Hi friend
greet(name: "Ada"); // Hi Ada

可选位置参数的默认值

方括号中的可选位置参数也可以带有默认值,这样它们就不会悄悄变成 null。

int pow(int base, [int exp = 2]) {
  return base * exp;
}

默认值必须是常量

默认值必须是编译时常量。字面量和 const 值可以使用,但普通变量或函数调用不可以。

void f({int n = 10}) {} // ok
// void g({int n = x}) {} // error

required 关键字

使用 required 标记命名参数,可以强制调用者提供它。忘记提供它会变成编译错误,而不是运行时才出现的意外。

void send({required String to}) {}

required 为何重要

命名参数默认是可选的,因此键值可能会缺失。required 可以保证调用者始终提供它。🔒

required 与非空类型

一个不可为空的命名参数必须是 required,或者具有默认值。否则 Dart 无法保证它包含一个值。

void box({required int w, int h = 10}) {}

混合使用 required 和默认值

一个函数可以同时采用两种方式:某些参数使用 required,其他参数使用合理的默认值。这样既清晰又灵活。

void user({required String id, bool active = true}) {}

没有默认值的可空参数

如果命名参数是可空的,它可以直接默认为 null。不需要 required,也不需要显式的默认值。

void note({String? text}) {} // text may be null

更简洁的调用位置

合理的默认值可以缩短调用语句。调用者只需传入特殊的内容,让默认值优雅地处理常见情况。✨

快速检查

现在确认一下您是否理解 required 和默认值。

回顾

现在您可以为可选参数设置默认值,并使用 required 让关键参数成为必需项。您的函数既安全又方便了。🎉

免费开始

用 AI 导师学习 Dart — 免费

在浏览器中编写并运行真实代码,获得全天候 AI 导师的即时帮助,并在网页或应用中继续学习。

课程
30
课程
120

常见问题解答

「默认值和 required」课时是免费的吗?

是的 — 「默认值和 required」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Dart Academy 课程的其余内容,请升级到 CoddyKit PRO。 Dart Academy 课程共包含 4 节课。

「默认值和 required」这节课中我会学到什么?

让参数变为可选或必需 你通过在浏览器中直接运行的动手代码来练习 Dart Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 Dart Academy 需要有经验吗?

无需任何先前经验。CoddyKit 上的 Dart Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 3 节课,共 4 节。

「默认值和 required」课时需要多长时间?

大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。

我能在这节 Dart Academy 课中编写并运行代码吗?

能。每节 Dart Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。

此课程中的所有课时

  1. 声明函数和返回类型
  2. 位置参数与命名参数
  3. 默认值和 required
  4. 作为一等值的函数
← 返回 Dart Academy