复制与共享状态
了解更改何时会或不会扩散
复制与共享状态 是 CoddyKit 上的免费 Mojo Academy 课时。 这是第 2 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Mojo Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Mojo Academy 课程共包含 4 节课。
修改何时会扩散?
有时编辑一个变量也会编辑另一个,有时则不会。区别在于 copy 还是共享状态。🔍
副本是自包含的
获得副本后,您持有的是独立数据。编辑它不会回头影响您复制它时得到的值。
var a = 1
var b = a
b = 2共享状态:一份数据,两个名称
在共享状态下,两个变量指向相同的底层数据。通过其中一个变量进行的修改,可以通过另一个变量看到。
明显的迹象
请问自己:编辑一个变量后,另一个变量是否也发生了变化?如果是,它们就是共享的;如果不是,您得到的就是副本。
Mojo 默认进行复制
对于值类型,Mojo 在赋值时会提供一个副本。因此在日常代码中,修改会很好地保持在局部。
var first = 7
var second = first
second = 8结构体会复制其字段
复制结构体时,您会复制其中的每个字段。新结构体与 original 完全独立。
共享为何会带来意外
共享状态意味着远处的修改可能悄悄改变您的值。这种诡异的远距离作用是错误的经典来源。
共享也有用途
共享并非坏事;有时您确实希望只有一个真实来源。关键是要有意地选择共享,而不是意外共享。
用这种视角阅读代码
看到赋值时,请想一想它创建的是副本还是链接。这个习惯可以帮助您预测修改会如何传播。
var original = 50
var backup = original快速比较
复制:修改停留在原处。共享:修改会扩散。Mojo 的默认设置倾向于副本,因此扩散是例外,而不是规则。
值得信赖的独立性
知道副本彼此独立后,您就可以放心地修改值,并确信程序的其他部分仍然稳定。✅
快速检查
两个变量指向相同的底层数据。您修改其中一个。您预期会发生什么?
回顾
副本会将修改限制在自身范围内;共享状态则会让修改扩散。Mojo 默认复制值类型,因此意外情况很少。🎯
常见问题解答
「复制与共享状态」课时是免费的吗?
是的 — 「复制与共享状态」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Mojo Academy 课程的其余内容,请升级到 CoddyKit PRO。 Mojo Academy 课程共包含 4 节课。
「复制与共享状态」这节课中我会学到什么?
了解更改何时会或不会扩散 你通过在浏览器中直接运行的动手代码来练习 Mojo Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 Mojo Academy 需要有经验吗?
无需任何先前经验。CoddyKit 上的 Mojo Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 2 节课,共 4 节。
「复制与共享状态」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 Mojo Academy 课中编写并运行代码吗?
能。每节 Mojo Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。
此课程中的所有课时
- 值语义意味着什么
- 复制与共享状态
- Mojo 的安全默认行为
- 初识变更