0
我對於面向協議的編程非常陌生,所以我的問題可能很容易。協議中的方法
我打算定義一個具有clone()方法的Cloneable協議。此方法返回其內容與調用clone()方法的對象內容相同的對象。因此,clone()方法的返回類型必須適應採用Cloneable協議的類。
protocol Cloneable{
func clone() -> AnyObject
}
public final class Circle : Cloneable{
private var radius : Double
private var area : Double
private var perimeter : Double
public init(radius : Double){
self.radius = radius
area = PI * radius * radius
perimeter = 2 * PI * radius
}
public convenience init(){
self.init(radius : 1.0)
}
func clone() -> Circle{
return Circle(radius : self.radius)
}
}
我得到錯誤,說明Class Circle不符合Cloneable協議。 它要我用Circle改變AnyObject。如果我這樣做,那麼這個協議如何用於所有類?
這是非常合理的 – Goktug
這種方法的問題是,你總是要轉換返回值:'讓CIRCLE2 = circle1.clone()as!圓' –
這是通用協議的本質。 –