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
