> On May 16, 2017, at 12:32 PM, Nevin Brackett-Rozinsky via swift-users
> <[email protected]> wrote:
>
> There is not.
>
> At some point in the future, I believe the plan is to eventually allow
> default implementations to be written in-line within the protocol declaration
> itself. In other words, the fact that default implementations currently must
> appear in extensions, is a temporary limitation that has not yet been a
> priority to address.
>
> Once we gain the ability to define default implementations within protocols
> themselves, rather than extensions, then your use-case will “just work” (at
> least as long as you control the protocol anyway). I wouldn’t hold my breath
> though, as that behavior will not appear this year, and the plans for next
> year have not been hashed out yet.
Even that won’t completely solve the problem, though, because:
protocol P {
func foo() {
// default implementation
}
}
struct S: P {
func foo() {
// overriden implementation
}
}
If foo is refactored here, S will start getting the wrong implementation of it,
silently, with no warning.
People have tried to bring up proposals to add some sort of “override”-like
keyword for protocols on swift-evolution a bunch of times, but it always gets
shouted down by certain members of the group, so we’re probably permanently
stuck with this situation where a supposedly “protocol-oriented” language is
not safe to use with protocols.
Charles
_______________________________________________
swift-users mailing list
[email protected]
https://lists.swift.org/mailman/listinfo/swift-users