2015-08-15 111 views
0

//协议高级Swift2 - 在结构实现的类Vs的实施协议协议

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

虽然在这里类实现一个协议是语法

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

现在为什么要插入“在结构中变异“,它在底下做什么。

回答

1

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