[swift-evolution] [Pitch] Requiring proactive overrides for default protocol implementations.

Erica Sadun erica at ericasadun.com
Thu Apr 28 12:25:15 CDT 2016

> On Apr 28, 2016, at 11:05 AM, Xiaodi Wu <xiaodi.wu at gmail.com> wrote:
> How is retroactive modeling accommodated in this scheme? Say I want to conform three types I don't own to a protocol of my design and supply a default implementation for a protocol requirement. How would I go about it?

extension NotMyType: ProtocolIdesigned {...}

extension NotMyProtocol {
     required func method1() {...}
     override required func method2() {...} // assumes NMP has already provided default
     func newThing() {...}

The only tricky bit is when NotMyProtocol already has a default required func implementation and an override required func implementation (although that should be rare). In such case, you probably have to create a new protocol DerivedProtocol: NotMyProtocol and work from there. The override in the DerivedProtocol will then take priority over the override in NotMyProtocol.

-- E

More information about the swift-evolution mailing list