位置参数与命名参数
使用清晰的有序参数或带标签的参数调用函数
位置参数与命名参数 是 CoddyKit 上的免费 Dart Academy 课时。 这是第 2 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Dart Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Dart Academy 课程共包含 4 节课。
传递参数的两种方式
Dart 提供两种参数形式:位置参数和命名参数。选择正确的形式,可以让函数调用更清晰,也更不容易误用。
位置参数
位置参数按照顺序匹配。第一个值填入第一个位置,第二个值填入第二个位置,依此类推。
int sub(int a, int b) {
return a - b;
}
sub(10, 3); // 7顺序确实很重要
对于位置参数,调换顺序会改变含义。在这里,顺序决定每个值分别对应什么,因此请务必小心。
sub(3, 10); // -7, not 7命名参数
将参数放在花括号中即可使它们成为命名参数。调用者随后通过标签传入参数,因此顺序完全不再重要。
void move({int x, int y}) {
// ...
}使用标签调用
调用带有命名参数的函数时,请在每个标签后写一个冒号。这样调用语句读起来就像普通中文一样清晰。
move(y: 5, x: 2);命名参数让调用自带说明
标签可以将晦涩的调用变得易读。读者能立即看出每个值的含义,因此命名参数非常有助于清晰性。📖
drawBox(width: 100, height: 50);命名参数默认是可选的
普通命名参数默认是可选的,因此调用者可以跳过它们。除非另有说明,否则 Dart 会将被跳过的值填为 null。
void config({String? theme}) {}
config(); // theme is null可选的位置参数
使用方括号也可以让位置参数成为可选的。末尾的参数可以省略,并且默认值为 null。
String tag(String name, [String? id]) {
return id == null ? name : "$name#$id";
}混合使用两种形式
您可以先使用必需的位置参数,再在花括号中添加命名参数。必需的值放在前面,其余参数保持灵活。
void log(String msg, {bool loud = false}) {}如何选择
对于一两个明显的输入,请使用位置参数。当调用包含许多值,或包含需要标签的布尔值时,请使用命名参数。
避免布尔值陷阱
调用中的一个单独 true 无法向读者说明任何信息。像 animate: true 这样的命名参数能让意图一清二楚。✅
show(animate: true);快速检查
现在来检查一下您对参数形式的掌握程度。
回顾
现在您可以在简短调用中选择位置参数,在需要可读性的调用中使用命名参数,也可以将两者混合使用。清晰的调用意味着更少的错误。🎯
常见问题解答
「位置参数与命名参数」课时是免费的吗?
是的 — 「位置参数与命名参数」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Dart Academy 课程的其余内容,请升级到 CoddyKit PRO。 Dart Academy 课程共包含 4 节课。
「位置参数与命名参数」这节课中我会学到什么?
使用清晰的有序参数或带标签的参数调用函数 你通过在浏览器中直接运行的动手代码来练习 Dart Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 Dart Academy 需要有经验吗?
无需任何先前经验。CoddyKit 上的 Dart Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 2 节课,共 4 节。
「位置参数与命名参数」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 Dart Academy 课中编写并运行代码吗?
能。每节 Dart Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。
此课程中的所有课时
- 声明函数和返回类型
- 位置参数与命名参数
- 默认值和 required
- 作为一等值的函数