Swift 面试题
目录

Swift 中结构体的方法中如何修改属性值?

· 约 2 分钟读完 · 第 64 / 196 章

推荐答案

在 Swift 中,结构体的方法中如果需要修改属性值,必须将方法标记为 mutating。mutating 关键字允许方法修改结构体的属性值。

本题详细解读

1. 结构体的不可变性

在 Swift 中,结构体是值类型。默认情况下,结构体的实例是不可变的,这意味着你不能在普通方法中修改结构体的属性值。

2. mutating 关键字的作用

为了允许结构体的方法修改其属性值,Swift 提供了 mutating 关键字。通过在方法前加上 mutating 关键字,你可以告诉编译器这个方法会修改结构体的状态。

3. 使用 mutating 方法的限制

  • mutating 方法只能用于变量实例(var),不能用于常量实例(let)。因为常量实例是不可变的,无法修改其属性值。

  • mutating 方法可以修改结构体的所有属性,包括存储属性和计算属性。

4. 示例解析

在上面的示例中,moveBy(x:y:) 方法被标记为 mutating,因此它可以修改 Point 结构体的 x 和 y 属性。调用 moveBy(x:y:) 方法后,point 实例的属性值被成功修改。

5. 总结

mutating 关键字是 Swift 中用于允许结构体方法修改属性值的关键机制。通过使用 mutating,你可以在结构体的方法中安全地修改其状态。