I really must do more research before making accusations ;-)

> Which still leaves my question of why I have to reimplement the default 
> copy(other:) method from the protocol's extension in the base class ???

Apparently, the answer is to remove the declaration of the copy(other:) method 
from the protocol itself and to leave the default implementation in the 
extension !

So I now end up with :

protocol Copyable
{
  init(other: Self)
}

extension Copyable
{
  func copy() -> Self
  {
    return type(of: self).init(other: self)
  }
}


class Shape : Copyable
{
  var color: NSColor
  
  init(color: NSColor)
  {
    self.color = color
  }
  
  required init(other: Shape)
  {
    color = other.color
  }
}

… and all is well with the world :-)

Mind you, the compiler error messages were hardly helpful to diagnosing this 
particular problem :-(

Joanna

--
Joanna Carter
Carter Consulting

_______________________________________________
swift-users mailing list
swift-users@swift.org
https://lists.swift.org/mailman/listinfo/swift-users

Reply via email to