高级 Swift2 - 在 Class 中实现协议与在结构中实现协议

Advanced Swift2 - Implementing Protocols in Class Vs Implementing Protocols in Struct

// 协议

Protocol Movable {
  mutating func moveTo(p : CGPoint) 
}

在 Class 中实现协议时,这里是语法

Class Car : Movable {
 func moveTo(p : CGPoint) {...} 
}
Struct Shape : Movable {
 mutating func moveTo(p : CGPoint) {...} 
}

现在为什么必须在 struct 中插入 "mutating",它在下面做什么。

因为结构默认假定为不可变的,而 class 实例假定为可变的。因此,您无需标记修改 class 实例的函数,但必须标记修改结构的方法。假设你写了 let myShape = Shape()。编译器需要知道它不能让你调用 myShape.moveTo(...).