That is a very important point! Making classes or structs conform to a new 
protocol by an empty extension is a really important use case.

-Thorsten 

Am 06.01.2016 um 05:50 schrieb Brent Royal-Gordon via swift-evolution 
<[email protected]>:

>> Taking inspiration from syntax used for methods in classes that override 
>> methods in superclasses, require methods that override dynamically 
>> dispatched default implementations in protocol extensions to use the 
>> override keyword. Likewise, forbid the override keyword if the method being 
>> implemented instead 'masks' (would that be the right word?) a statically 
>> dispatched method in a protocol extension which can nonetheless be invoked 
>> by upcasting to the protocol.
> 
> This has been suggested before, usually in the form of a separate `implement` 
> keyword. The main problem is that it makes it impossible to write a protocol 
> after the fact which formalizes some existing pattern in the types.
> 
> What do I mean by that? Well, imagine you need generic access to the `min` 
> and `max` static properties of the various integer types. There's no existing 
> protocol that includes those members. But you can write one and then extend 
> the integer types to conform to your new protocol:
> 
>    protocol BoundedIntegerType: IntegerType {
>        static var min: Self { get }
>        static var max: Self { get }
>    }
>    extension Int: BoundedType {}
>    extension Int8: BoundedType {}
>    extension Int16: BoundedType {}
>    extension Int32: BoundedType {}
>    extension Int64: BoundedType {}
> 
>    func printLowestPossibleValueOfValue<Integer: BoundedIntegerType>(x: 
> Integer) {
>        print(Integer.min)
>    }
> 
> This only works because `min` and `max` *don't* need any special marking to 
> be used to satisfy a requirement. Requiring a keyword like you suggest would 
> remove that feature.
> 
> -- 
> Brent Royal-Gordon
> Architechies
> 
> _______________________________________________
> swift-evolution mailing list
> [email protected]
> https://lists.swift.org/mailman/listinfo/swift-evolution
_______________________________________________
swift-evolution mailing list
[email protected]
https://lists.swift.org/mailman/listinfo/swift-evolution

Reply via email to