It’s not clear if such a keyword can be designed in a way that covers all
cases. For example, consider a protocol extension that provides a default
implementation for a requirement in a different protocol:
protocol R {
func f()
}
protocol P {}
extension P {
func f()
}
struct S : R, P {}
Or a constrained extension that provides a default that only applies in certain
cases:
protocol P {
func f()
}
extension P where Self : AnyObject {
func f()
}
class C : P {}
Slava
> On May 16, 2017, at 8:53 AM, Johannes Weiss via swift-users
> <[email protected]> wrote:
>
> Hi swift-users,
>
> Is there anything like the `override` keyword for making sure that default
> implementations in protocols are not adding a new function?
>
> An example would be the following:
>
> protocol FooProto {
> func foo()
> }
>
> extension FooProto {
> func foo() { /* <-- can I mark this as being a default implementation
> */
> print("foo default")
> }
> }
>
> Right now, there's a `func foo()` default implementation for `FooProto` but
> if later of `foo` gets refactored to `bar`, we lose the default
> implementation which can lead to problems.
>
> Is there anything in Swift (like the `override` keyword) that allows me to
> say this is a default implementation and not a new method?
>
> Thanks,
> Johannes
> _______________________________________________
> swift-users mailing list
> [email protected]
> https://lists.swift.org/mailman/listinfo/swift-users
_______________________________________________
swift-users mailing list
[email protected]
https://lists.swift.org/mailman/listinfo/swift-users