高级 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(...)
.
// 协议
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(...)
.