默认值和 required
让参数变为可选或必需
默认值和 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}) {} // errorrequired 关键字
使用 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 反馈 — 无需本地设置。