空值短路级联(?..)
在可空对象上安全地进行级联调用
空值短路级联(?..) 是 CoddyKit 上的免费 Dart Academy 课时。 这是第 2 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Dart Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Dart Academy 课程共包含 4 节课。
可空值陷阱
对可能为空值的值使用普通级联会导致崩溃。在空值上调用方法会在任何一行运行前就抛出错误。
认识空值短路
Dart 提供了安全版本:空值短路级联,写作问号后接两个点号。只有对象不为空时,它才会运行。
button?..text = 'Save'
..onTap = save;短路的工作方式
如果目标是空值,整个级联都会被跳过,表达式的结果也会直接变为空值。不会崩溃,也不会只完成一半操作。
只有第一个点号需要标记
您只需在第一个级联处写一次问号。后面的行继续使用普通的双点号,因为 Dart 已经知道该对象不为空。
obj?..a()
..b()
..c();要么全部执行,要么全部不执行
空值短路是要么全部执行,要么全部不执行:对象存在时每一行都会运行,否则一行也不会运行。链不会只执行一半。
与普通级联相比
普通级联假定对象存在。类型可为空且对象可能缺失时,空值短路形式就是您的安全保障。
返回可空值
由于结果可能是对象,也可能是空值,因此整个表达式的类型是可空类型。请将返回结果视为可能为空。
一个实际示例
假设某个配置对象可能还不存在。空值短路可以让您只在它存在时进行设置,并将操作写在一行中。🛡️
settings?..theme = dark
..save();不要重复标记
在每一行都写问号是错误的,Dart 会将其标记出来。短路判断只在级联开始处进行一次。
与空安全配合良好
空值短路符合 Dart 的空安全机制。编译器可以相信,第一个点号之后的各行只会在真实存在的对象上运行。
何时使用
当变量是可空的,并且您希望配置它而不在级联外额外添加空值判断时,请使用空值短路。
快速检查
如何正确写出空值短路级联?
回顾
空值短路级联(?..)只会在对象存在时运行整个链,对象为空时跳过所有操作,并且只需写一次标记。🎯
常见问题解答
「空值短路级联(?..)」课时是免费的吗?
是的 — 「空值短路级联(?..)」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 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 反馈 — 无需本地设置。
此课程中的所有课时
- 级联运算符(..)
- 空值短路级联(?..)
- 展开和空值感知展开
- 集合中的 if 和 for