高级Swift2 - 在V类中实现协议在Struct

时间:2015-08-15 12:03:56

标签: struct protocols swift2 ios9

//协议

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

虽然在这里实现类中的协议是语法

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

现在为什么要插入"变异"在struct中,它在底层做了什么。

1 个答案:

答案 0 :(得分:1)

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