成员初始化器与 mutating 方法
了解 Swift 结构体:自动生成的成员初始化器,以及修改属性时必须使用 mutating 方法。
成员初始化器与 mutating 方法 是 CoddyKit 上的免费 Swift Academy 课时。 这是第 1 节课,共 3 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Swift Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Swift Academy 课程共包含 3 节课。
入门
Swift 中的结构体会自动获得成员初始化器,而修改状态的方法必须使用可变标记。
成员初始化器
对于包含存储属性的结构体,Swift 会自动提供 init(x:y:)。
struct Point {
var x: Int
var y: Int
}
let p = Point(x: 3, y: 5)
print(p.x, p.y)非可变方法
不带可变标记的方法不能修改属性——默认情况下,它们只能读取属性。
struct Counter {
var count = 0
func show() { print(count) }
}
let c = Counter()
c.show()可变递增
添加可变标记后,结构体方法就可以修改其属性。
struct Counter {
var count = 0
mutating func increment() {
count += 1
}
}
var c = Counter()
c.increment()
print(c.count)重新赋值给 self
可变方法甚至可以为 self 重新赋予完整的新值。
struct Switch {
var on: Bool = false
mutating func toggle() {
self = Switch(on: !on)
}
}
var s = Switch()
s.toggle()
print(s.on)提示
提示:
- 只有在必须修改属性时才使用可变标记。
- 让大多数方法保持不可变,以提高代码清晰度。
- 请记住,类不需要这个关键字。
可变关键字
快速检查:为什么结构体方法需要使用 mutating 才能修改属性?
回顾
回顾:结构体会自动获得成员初始化器。当方法修改状态或重新赋值给 self 时,请使用可变标记。
常见问题解答
「成员初始化器与 mutating 方法」课时是免费的吗?
是的 — 「成员初始化器与 mutating 方法」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Swift Academy 课程的其余内容,请升级到 CoddyKit PRO。 Swift Academy 课程共包含 3 节课。
「成员初始化器与 mutating 方法」这节课中我会学到什么?
了解 Swift 结构体:自动生成的成员初始化器,以及修改属性时必须使用 mutating 方法。 你通过在浏览器中直接运行的动手代码来练习 Swift Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 Swift Academy 需要有经验吗?
无需任何先前经验。CoddyKit 上的 Swift Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 1 节课,共 3 节。
「成员初始化器与 mutating 方法」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 Swift Academy 课中编写并运行代码吗?
能。每节 Swift Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。
此课程中的所有课时
- 成员初始化器与 mutating 方法
- 继承、重写与 final
- 访问控制(public/internal/fileprivate/private)