[swift-evolution] Protocol non-conformance clause

Erica Sadun erica at ericasadun.com
Fri Apr 29 10:20:27 CDT 2016


In Wux's example, he has third party code:

```
Type ThirdParty {
    func foo() { print("from third party") }
}
```

Then in his own code, he defines protocol A and extends it:

extension A {
    func foo() {
        print("Self is B")
    }
}

and conforms ThirdParty to A. But he wants the original  foo() implementation. Your approach
for writing an extension for plain A without a where clause doesn't offer that solution. The goal
here is "Add this default behavior *only* where a type does not conform to B"

-- E


> On Apr 29, 2016, at 9:10 AM, Thorsten Seitz <tseitz42 at icloud.com> wrote:
> 
> Just writing an extension for plain A without a where clause works.
> 
> -Thorsten 
> 
> Am 29.04.2016 um 16:03 schrieb Erica Sadun via swift-evolution <swift-evolution at swift.org <mailto:swift-evolution at swift.org>>:
> 
>> Gmane is down as far as my browser is concerned and I haven't found anything by Googling.
>> 
>> Given the following:
>> 
>> protocol A {func foo()}
>> protocol B {} // empty protocol
>> 
>> extension A where Self:B {
>>     func foo() {
>>         print("Self is B")
>>     }
>> }
>> 
>> // Works
>> struct S1: A, B {}
>> S1().foo()
>> 
>> Is there a way to produce a similar extension that exempts any type that conforms to B?
>> 
>> cc'ing in Wux because this is a direct response to a scenario he brought up yesterday.
>> 
>> -- E
>> 
>> _______________________________________________
>> swift-evolution mailing list
>> swift-evolution at swift.org <mailto:swift-evolution at swift.org>
>> https://lists.swift.org/mailman/listinfo/swift-evolution <https://lists.swift.org/mailman/listinfo/swift-evolution>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-evolution/attachments/20160429/12ad5b91/attachment.html>


More information about the swift-evolution mailing list