//协议
Protocol Movable {
mutating func moveTo(p : CGPoint)
}
虽然在这里实现类中的协议是语法
Class Car : Movable {
func moveTo(p : CGPoint) {...}
}
Struct Shape : Movable {
mutating func moveTo(p : CGPoint) {...}
}
现在为什么要插入"变异"在struct中,它在底层做了什么。
答案 0 :(得分:1)
因为默认情况下结构体假定为不可变结构,所以假定类实例是可变的。因此,您不需要标记修改类实例的函数,但必须标记修改结构的方法。假设你写了let myShape = Shape()
。编译器需要知道它不能让你调用myShape.moveTo(...)
。